From f93020d5e6d7594c335cc129ad02c21ac26ed58a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20Wikstr=C3=B6m?= Date: Wed, 15 Jan 2020 20:40:24 +0100 Subject: [PATCH] Expand attachment links with point in correct place * lisp/ox-texinfo.el (org-texinfo-link) * lisp/ox-odt.el (org-odt-link) * lisp/ox-md.el (org-md-link) * lisp/ox-man.el (org-man-link) * lisp/ox-latex.el (org-latex--inline-image, org-latex-link) * lisp/ox-html.el (org-html-link) * lisp/ox-ascii.el (org-ascii-link): Move point to the link for org-attach-expand to know from which headline to expand the link. --- lisp/ox-ascii.el | 4 +++- lisp/ox-html.el | 4 +++- lisp/ox-latex.el | 8 ++++++-- lisp/ox-man.el | 4 +++- lisp/ox-md.el | 4 +++- lisp/ox-odt.el | 4 +++- lisp/ox-texinfo.el | 4 +++- 7 files changed, 24 insertions(+), 8 deletions(-) diff --git a/lisp/ox-ascii.el b/lisp/ox-ascii.el index bcd62e98d..9d7168831 100644 --- a/lisp/ox-ascii.el +++ b/lisp/ox-ascii.el @@ -1580,7 +1580,9 @@ INFO is a plist holding contextual information." (raw-path (org-element-property :path link)) (path (cond ((string= raw-type "attachment") - (setq raw-path (file-relative-name (org-attach-expand raw-path))) + (setq raw-path (file-relative-name + (org-with-point-at (org-element-property :begin link) + (org-attach-expand raw-path)))) (concat type ":" raw-path)) (t (concat type ":" raw-path))))) (cond diff --git a/lisp/ox-html.el b/lisp/ox-html.el index aafeb6909..be33aead1 100644 --- a/lisp/ox-html.el +++ b/lisp/ox-html.el @@ -3081,7 +3081,9 @@ INFO is a plist holding contextual information. See (url-encode-url (concat type ":" raw-path))) ((string= type "file") (when (string= raw-type "attachment") - (setq raw-path (file-relative-name (org-attach-expand raw-path)))) + (setq raw-path (file-relative-name + (org-with-point-at (org-element-property :begin link) + (org-attach-expand raw-path))))) ;; During publishing, turn absolute file names belonging ;; to base directory into relative file names. Otherwise, ;; append "file" protocol to absolute file name. diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el index 7758abdec..c297cbf4d 100644 --- a/lisp/ox-latex.el +++ b/lisp/ox-latex.el @@ -2363,7 +2363,9 @@ used as a communication channel." (let* ((parent (org-export-get-parent-element link)) (path (let ((raw-path (org-element-property :path link))) (when (string= (org-element-property :type link) "attachment") - (setq raw-path (file-relative-name (org-attach-expand raw-path)))) + (setq raw-path (file-relative-name + (org-with-point-at (org-element-property :begin link) + (org-attach-expand raw-path))))) (if (not (file-name-absolute-p raw-path)) raw-path (expand-file-name raw-path)))) (filetype (file-name-extension path)) @@ -2536,7 +2538,9 @@ INFO is a plist holding contextual information. See (concat type ":" raw-path)) ((string= type "file") (when (string= raw-type "attachment") - (setq raw-path (file-relative-name (org-attach-expand raw-path)))) + (setq raw-path (file-relative-name + (org-with-point-at (org-element-property :begin link) + (org-attach-expand raw-path))))) (org-export-file-uri raw-path)) (t raw-path))))) diff --git a/lisp/ox-man.el b/lisp/ox-man.el index c98f0cd58..37e5d7603 100644 --- a/lisp/ox-man.el +++ b/lisp/ox-man.el @@ -624,7 +624,9 @@ INFO is a plist holding contextual information. See (concat type ":" raw-path)) ((string= type "file") (when (string= raw-type "attachment") - (setq raw-path (file-relative-name (org-attach-expand raw-path)))) + (setq raw-path (file-relative-name + (org-with-point-at (org-element-property :begin link) + (org-attach-expand raw-path))))) (org-export-file-uri raw-path)) (t raw-path)))) (cond diff --git a/lisp/ox-md.el b/lisp/ox-md.el index d0504302c..d18d07544 100644 --- a/lisp/ox-md.el +++ b/lisp/ox-md.el @@ -413,7 +413,9 @@ INFO is a plist holding contextual information. See (concat type ":" raw-path)) ((string= type "file") (when (string= raw-type "attachment") - (setq raw-path (file-relative-name (org-attach-expand raw-path)))) + (setq raw-path (file-relative-name + (org-with-point-at (org-element-property :begin link) + (org-attach-expand raw-path))))) (org-export-file-uri (funcall link-org-files-as-md raw-path))) (t raw-path)))) (cond diff --git a/lisp/ox-odt.el b/lisp/ox-odt.el index e0def3963..b7dc56f48 100644 --- a/lisp/ox-odt.el +++ b/lisp/ox-odt.el @@ -2714,7 +2714,9 @@ INFO is a plist holding contextual information. See (concat type ":" raw-path)) ((string= type "file") (when (string= raw-type "attachment") - (setq raw-path (file-relative-name (org-attach-expand raw-path)))) + (setq raw-path (file-relative-name + (org-with-point-at (org-element-property :begin link) + (org-attach-expand raw-path))))) (org-export-file-uri raw-path)) (t raw-path))) ;; Convert & to & for correct XML representation diff --git a/lisp/ox-texinfo.el b/lisp/ox-texinfo.el index 177007bed..85c9798bb 100644 --- a/lisp/ox-texinfo.el +++ b/lisp/ox-texinfo.el @@ -1066,7 +1066,9 @@ INFO is a plist holding contextual information. See (concat type ":" raw-path)) ((string= type "file") (when (string= raw-type "attachment") - (setq raw-path (file-relative-name (org-attach-expand raw-path)))) + (setq raw-path (file-relative-name + (org-with-point-at (org-element-property :begin link) + (org-attach-expand raw-path))))) (org-export-file-uri raw-path)) (t raw-path)))) (cond