Browse Source

ox: Add missing `org-link-unescape' calls

* lisp/ox-ascii.el (org-ascii-link):
* lisp/ox-latex.el (org-latex--inline-image):
(org-latex-link): Add missing `org-link-unescape' to handle
hex-escaped URI.

Reported-by: stardiviner <numbchild@gmail.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-02/msg00265.html>
Nicolas Goaziou 3 months ago
parent
commit
0f70354b32
2 changed files with 7 additions and 4 deletions
  1. 2 1
      lisp/ox-ascii.el
  2. 5 3
      lisp/ox-latex.el

+ 2 - 1
lisp/ox-ascii.el

@@ -1600,7 +1600,8 @@ INFO is a plist holding contextual information."
 	  ;; Don't know what to do.  Signal it.
 	  (_ "???"))))
      (t
-      (let ((raw-link (org-element-property :raw-link link)))
+      (let ((raw-link (org-link-unescape
+		       (org-element-property :raw-link link))))
 	(if (not (org-string-nw-p desc)) (format "<%s>" raw-link)
 	  (concat (format "[%s]" desc)
 		  (and (not (plist-get info :ascii-links-to-notes))

+ 5 - 3
lisp/ox-latex.el

@@ -2344,7 +2344,8 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
 LINK is the link pointing to the inline image.  INFO is a plist
 used as a communication channel."
   (let* ((parent (org-export-get-parent-element link))
-	 (path (let ((raw-path (org-element-property :path link)))
+	 (path (let ((raw-path (org-link-unescape
+				(org-element-property :path link))))
 		 (if (not (file-name-absolute-p raw-path)) raw-path
 		   (expand-file-name raw-path))))
 	 (filetype (file-name-extension path))
@@ -2500,7 +2501,8 @@ INFO is a plist holding contextual information.  See
 	 (path (org-latex--protect-text
 		(cond ((member type '("http" "https" "ftp" "mailto" "doi"))
 		       (concat type ":" raw-path))
-		      ((string= type "file") (org-export-file-uri raw-path))
+		      ((string= type "file")
+		       (org-export-file-uri (org-link-unescape raw-path)))
 		      (t raw-path)))))
     (cond
      ;; Link type is handled by a special function.
@@ -2556,7 +2558,7 @@ INFO is a plist holding contextual information.  See
       (format (org-export-get-coderef-format path desc)
 	      (org-export-resolve-coderef path info)))
      ;; External link with a description part.
-     ((and path desc) (format "\\href{%s}{%s}" path desc))
+     ((and path desc) (format "\\href{%s}{%s}" (org-link-unescape path) desc))
      ;; External link without a description part.
      (path (format "\\url{%s}" path))
      ;; No path, only description.  Try to do something useful.