org-download

a fork of abo-abo's org-download
git clone https://git.trogloxene.org/org-download.git
Log | Files | Refs | README

commit b96fd7ba02cbdae95cc37970ebcfae8afa8b25d2
parent 3c573f74971e24d620a9fbe15fa203450644e9d7
Author: Oleh Krehel <ohwoeowho@gmail.com>
Date:   Wed, 11 Mar 2020 11:49:21 +0100

org-download.el (org-download-image): Insert links to non-images as well

* org-download.el (org-download--parse-link): Extract.

Re #31

Diffstat:
Morg-download.el | 83+++++++++++++++++++++++++++++++++++++++++++------------------------------------
1 file changed, 45 insertions(+), 38 deletions(-)

diff --git a/org-download.el b/org-download.el @@ -404,47 +404,54 @@ It's inserted before the image link and is used to annotate it.") (org-link-escape (funcall org-download-abbreviate-filename-function filename))))) +(defun org-download--parse-link (link) + (let (ext) + (cond ((image-type-from-file-name link) + (list link nil)) + ((string-match "^file:///" link) + (list link nil)) + (t + (with-current-buffer (url-retrieve-synchronously link t) + (cond ((let ((regexes org-download-img-regex-list) + lnk) + (while (and (not lnk) regexes) + (goto-char (point-min)) + (when (re-search-forward (pop regexes) nil t) + (backward-char) + (setq lnk (read (current-buffer))))) + (when lnk + (setq link lnk)))) + ((progn + (goto-char (point-min)) + (when (re-search-forward "^Content-Type: image/\\(.*\\)$") + (setq ext (match-string 1))))) + (t + (error "Link %s does not point to an image; unaliasing failed" link)))) + (list link ext))))) + (defun org-download-image (link) "Save image at address LINK to `org-download--dir'." (interactive "sUrl: ") - (let (ext) - (unless (image-type-from-file-name link) - (with-current-buffer (url-retrieve-synchronously link t) - (cond ((let ((regexes org-download-img-regex-list) - lnk) - (while (and (not lnk) regexes) - (goto-char (point-min)) - (when (re-search-forward (pop regexes) nil t) - (backward-char) - (setq lnk (read (current-buffer))))) - (when lnk - (setq link lnk)))) - ((progn - (goto-char (point-min)) - (when (re-search-forward "^Content-Type: image/\\(.*\\)$") - (setq ext (match-string 1))))) - (t - (error "Link %s does not point to an image; unaliasing failed" link))))) - (let ((filename - (cond ((eq org-download-method 'attach) - (let ((org-download-image-dir (progn (require 'org-attach) - (org-attach-dir t))) - org-download-heading-lvl) - (org-download--fullname link ext))) - ((fboundp org-download-method) - (funcall org-download-method link)) - (t - (org-download--fullname link ext))))) - (setq org-download-path-last-file filename) - (when (image-type-from-file-name filename) - (org-download--image link filename) - (when (eq major-mode 'org-mode) - (when (eq org-download-method 'attach) - (org-attach-attach filename nil 'none)) - (org-download-insert-link link filename)) - (when (and (eq org-download-delete-image-after-download t) - (not (url-handler-file-remote-p (current-kill 0)))) - (delete-file link delete-by-moving-to-trash)))))) + (let* ((link-and-ext (org-download--parse-link link)) + (filename + (cond ((eq org-download-method 'attach) + (let ((org-download-image-dir (progn (require 'org-attach) + (org-attach-dir t))) + org-download-heading-lvl) + (apply #'org-download--fullname link-and-ext))) + ((fboundp org-download-method) + (funcall org-download-method link)) + (t + (apply #'org-download--fullname link-and-ext))))) + (setq org-download-path-last-file filename) + (org-download--image link filename) + (when (eq major-mode 'org-mode) + (when (eq org-download-method 'attach) + (org-attach-attach filename nil 'none)) + (org-download-insert-link link filename)) + (when (and (eq org-download-delete-image-after-download t) + (not (url-handler-file-remote-p (current-kill 0)))) + (delete-file link delete-by-moving-to-trash)))) (defun org-download-rename-at-point () "Rename image at point."