From a3c682a7d730b0ae9492407d080ba8549a19e02d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Bidar?= Date: Fri, 20 Dec 2024 01:00:46 +0200 Subject: [PATCH] org-link: Split link preview into two functions * lisp/ol.el (org-link-preview-file, org-link-preview-image-data): Split up the actual preview part into a separate function. The new preview function can be called by :preview handler to display the image according to the correct alignment for the link to be previewed. --- lisp/ol.el | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/lisp/ol.el b/lisp/ol.el index 032610bad..dd6b07152 100644 --- a/lisp/ol.el +++ b/lisp/ol.el @@ -2177,27 +2177,34 @@ (defun org-link-preview-file (ov path link) ((string-match-p (image-file-name-regexp) file)) ((file-exists-p file))) (let* ((width (org-display-inline-image--width link)) - (align (org-image--align link)) - (image (org--create-inline-image file width))) - (when image ; Add image to overlay - ;; See bug#59902. We cannot rely - ;; on Emacs to update image if the file - ;; has changed. - (image-flush image) - (overlay-put ov 'display image) - (overlay-put ov 'face 'default) - (overlay-put ov 'keymap image-map) - (when align - (overlay-put - ov 'before-string - (propertize - " " 'face 'default - 'display - (pcase align - ("center" `(space :align-to (- center (0.5 . ,image)))) - ("right" `(space :align-to (- right ,image))))))) + (image-data (org--create-inline-image file width))) + (when image-data + (org-link-preview-image-data ov image-data link) t))))) +(defun org-link-preview-image-data (ov image-data link) + "Display image data IMAGE-DATA in overlay OV for link. + +This intended to be used by functions which provide the :preview link property +of links such as in `org-link-preview-file'" + (let ((align (org-image--align link))) + ;; See bug#59902. We cannot rely + ;; on Emacs to update image if the file + ;; has changed. + (image-flush image-data) + (overlay-put ov 'display image-data) + (overlay-put ov 'face 'default) + (overlay-put ov 'keymap image-map) + (when align + (overlay-put + ov 'before-string + (propertize + " " 'face 'default + 'display + (pcase align + ("center" `(space :align-to (- center (0.5 . ,image-data)))) + ("right" `(space :align-to (- right ,image-data))))))))) + ;;;; "help" link type (defun org-link--open-help (path _) "Open a \"help\" type link. -- 2.45.2