Function: preview--update-buframe
preview--update-buframe is a byte-compiled function defined in
preview.el.
Signature
(preview--update-buframe &optional FORCE)
Documentation
Show or hide a buframe popup depending on overlays at point.
The frame is not updated if the buframe property has not changed,
unless FORCE is non-nil.
Source Code
;; Defined in ~/.emacs.d/elpa/auctex-14.2.0/preview.el
(defun preview--update-buframe (&optional force)
"Show or hide a buframe popup depending on overlays at point.
The frame is not updated if the `buframe' property has not changed,
unless FORCE is non-nil."
(let* ((frame-name "auctex-preview")
(buf-name " *auctex-preview-buffer*")
(old-frame (and (featurep 'buframe)
;; Do not autoload buframe if it is not already
;; loaded.
(buframe-find frame-name nil nil t))))
(if-let* ((ov (cl-find-if
(lambda (ov) (when (overlay-get ov 'buframe) ov))
(overlays-at (point))))
(str (overlay-get ov 'buframe)))
(unless (and (not force)
old-frame
(pcase (frame-parameter old-frame 'auctex-preview)
(`(,o . ,s) (and (eq o ov) (eq s str)))))
(if (require 'buframe nil t)
(let* ((buf (buframe-make-buffer
buf-name
(car-safe
(cddr (cdr-safe
preview-at-point-placement)))))
(max-image-size
(if (integerp max-image-size)
max-image-size
;; Set the size max-image-size using the current
;; frame, since the popup frame will be small to
;; begin with.
(* max-image-size (frame-width)))))
(with-current-buffer buf
(let (buffer-read-only)
(with-silent-modifications
(erase-buffer)
(insert (propertize str
;; Remove unnecessary properties
'help-echo nil
'keymap nil
'mouse-face nil))
(goto-char (point-min)))))
(setq old-frame
(buframe-make
frame-name
(lambda (frame)
(funcall
(or (car-safe (cdr-safe preview-at-point-placement))
#'buframe-position-right-of-overlay)
frame
ov))
buf
(overlay-buffer ov)
(window-frame)
(car-safe (cdr (cdr-safe
preview-at-point-placement)))))
(set-frame-parameter old-frame 'auctex-preview
(cons ov str)))
(when preview--buframe-error
(setq preview--buframe-error nil)
(error "buframe is unavailable for use with preview. \
See `preview-at-point-placement'."))))
(when old-frame
(set-frame-parameter old-frame 'auctex-preview nil)
(buframe-disable old-frame)))))