Fix inline previews for download:* links

This commit is contained in:
Henrik Lissner 2020-04-25 01:23:55 -04:00
parent efee633311
commit adbe9041ce
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 20 additions and 7 deletions

View file

@ -19,16 +19,20 @@ links relative to. PLIST is passed to `org-link-set-parameters' verbatim.
Links defined with this will be rendered in the `error' face if the file doesn't
exist, and `org-link' otherwise."
(declare (indent 2))
(let ((requires (plist-get plist :requires)))
(let ((requires (plist-get plist :requires))
(dir-fn (if (functionp dir-var)
dir-var
(lambda () (symbol-value 'dir-var)))))
(apply #'org-link-set-parameters
key
:complete (lambda ()
(if requires (mapc #'require (doom-enlist requires)))
(+org--relative-path (+org--read-link-path key (symbol-value dir-var))
(symbol-value dir-var)))
:follow (lambda (link) (find-file (expand-file-name link (symbol-value dir-var))))
(+org--relative-path (+org--read-link-path key (funcall dir-fn))
(funcall dir-fn)))
:follow (lambda (link)
(org-link-open-as-file (expand-file-name link (funcall dir-fn)) nil))
:face (lambda (link)
(if (file-exists-p (expand-file-name link (symbol-value dir-var)))
(if (file-exists-p (expand-file-name link (funcall dir-fn)))
'org-link
'error))
(doom-plist-delete plist :requires))))
@ -40,11 +44,20 @@ exist, and `org-link' otherwise."
;;;###autoload
(defun +org-image-file-data-fn (protocol link _description)
"Intepret LINK as an image file path and return its data."
(setq
link (expand-file-name
link
(pcase protocol
("download" (or org-download-image-dir org-attach-id-dir default-directory))
("attachment" org-attach-id-dir)
(_ default-directory))))
(when (and (file-exists-p link)
(image-type-from-file-name link))
(with-temp-buffer
(set-buffer-multibyte nil)
(setq buffer-file-coding-system 'binary)
(insert-file-contents-literally link)
(buffer-string))))
(buffer-substring-no-properties (point-min) (point-max)))))
;;;###autoload
(defun +org-inline-image-data-fn (_protocol link _description)

View file

@ -16,7 +16,7 @@
(after! org
;; A shorter link to attachments
(+org-define-basic-link "download" 'org-download-image-dir
(+org-define-basic-link "download" (lambda () (or org-download-image-dir org-attach-id-dir "."))
:image-data-fun #'+org-image-file-data-fn
:requires 'org-download))
:config