Browse Source

Update export back-ends wrt "file" link changes

* lisp/ox-latex.el (org-latex-link):
* lisp/ox-html.el (org-html-link):  Do not expand absolute file names
  and do not try to fix hierarchy part, as it is already taken care of
  at the parser level.

* lisp/ox-md.el (org-md-link): Ditto.  Also fix absolute file names.

* lisp/ox-odt.el (org-odt-link):
* lisp/ox-man.el (org-man-link):
* lisp/ox-texinfo.el (org-texinfo-link):
* contrib/lisp/ox-groff.el (org-groff-link): Ditto.  Do not prepend
  scheme part to relative file names either.

* contrib/lisp/ox-deck.el (org-deck-link): Small refactoring.
Nicolas Goaziou 11 years ago
parent
commit
9dac00129d
8 changed files with 20 additions and 36 deletions
  1. 1 1
      contrib/lisp/ox-deck.el
  2. 2 6
      contrib/lisp/ox-groff.el
  3. 6 7
      lisp/ox-html.el
  4. 2 3
      lisp/ox-latex.el
  5. 2 8
      lisp/ox-man.el
  6. 3 3
      lisp/ox-md.el
  7. 2 4
      lisp/ox-odt.el
  8. 2 4
      lisp/ox-texinfo.el

+ 1 - 1
contrib/lisp/ox-deck.el

@@ -378,7 +378,7 @@ the \"slide\" class will be added to the to the list element,
 
 (defun org-deck-link (link desc info)
   (replace-regexp-in-string "href=\"#" "href=\"#outline-container-"
-			    (org-html-link link desc info)))
+			    (org-export-with-backend 'html link desc info)))
 
 (defun org-deck-template (contents info)
   "Return complete document string after HTML conversion.

+ 2 - 6
contrib/lisp/ox-groff.el

@@ -1253,12 +1253,8 @@ INFO is a plist holding contextual information.  See
          (path (cond
                 ((member type '("http" "https" "ftp" "mailto"))
                  (concat type ":" raw-path))
-                ((string= type "file")
-                 (when (string-match "\\(.+\\)::.+" raw-path)
-                   (setq raw-path (match-string 1 raw-path)))
-                 (if (file-name-absolute-p raw-path)
-                     (concat "file://" (expand-file-name raw-path))
-                   (concat "file://" raw-path)))
+                ((and (string= type "file") (file-name-absolute-p raw-path))
+                 (concat "file://" raw-path))
                 (t raw-path)))
          protocol)
     (cond

+ 6 - 7
lisp/ox-html.el

@@ -2667,13 +2667,12 @@ INFO is a plist holding contextual information.  See
 	    (setq raw-path
 		  (funcall link-org-files-as-html-maybe raw-path info))
 	    ;; If file path is absolute, prepend it with protocol
-	    ;; component - "file://".
-	    (cond ((file-name-absolute-p raw-path)
-		   (setq raw-path
-			 (concat "file://" (expand-file-name
-					    raw-path))))
-		  ((and home use-abs-url)
-		   (setq raw-path (concat (file-name-as-directory home) raw-path))))
+	    ;; component - "file:".
+	    (cond
+	     ((file-name-absolute-p raw-path)
+	      (setq raw-path (concat "file:" raw-path)))
+	     ((and home use-abs-url)
+	      (setq raw-path (concat (file-name-as-directory home) raw-path))))
 	    ;; Add search option, if any.  A search option can be
 	    ;; relative to a custom-id or a headline title.  Any other
 	    ;; option is ignored.

+ 2 - 3
lisp/ox-latex.el

@@ -1799,9 +1799,8 @@ INFO is a plist holding contextual information.  See
 	 (path (cond
 		((member type '("http" "https" "ftp" "mailto"))
 		 (concat type ":" raw-path))
-		((string= type "file")
-		 (if (not (file-name-absolute-p raw-path)) raw-path
-		   (concat "file://" (expand-file-name raw-path))))
+		((and (string= type "file") (file-name-absolute-p raw-path))
+		 (concat "file:" raw-path))
 		(t raw-path)))
 	 protocol)
     (cond

+ 2 - 8
lisp/ox-man.el

@@ -638,21 +638,15 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
 DESC is the description part of the link, or the empty string.
 INFO is a plist holding contextual information.  See
 `org-export-data'."
-
   (let* ((type (org-element-property :type link))
          (raw-path (org-element-property :path link))
          ;; Ensure DESC really exists, or set it to nil.
          (desc (and (not (string= desc "")) desc))
-
          (path (cond
                 ((member type '("http" "https" "ftp" "mailto"))
                  (concat type ":" raw-path))
-                ((string= type "file")
-                 (when (string-match "\\(.+\\)::.+" raw-path)
-                   (setq raw-path (match-string 1 raw-path)))
-                 (if (file-name-absolute-p raw-path)
-                     (concat "file://" (expand-file-name raw-path))
-                   (concat "file://" raw-path)))
+                ((and (string= type "file") (file-name-absolute-p raw-path))
+                 (concat "file:" raw-path))
                 (t raw-path)))
          protocol)
     (cond

+ 3 - 3
lisp/ox-md.el

@@ -321,12 +321,12 @@ a communication channel."
 		     (cond
 		      ((member type '("http" "https" "ftp"))
 		       (concat type ":" raw-path))
-		      ((equal type "file")
+		      ((string= type "file")
 		       (let ((path (funcall link-org-files-as-md raw-path)))
 			 (if (not (file-name-absolute-p path)) path
 			   ;; If file path is absolute, prepend it
-			   ;; with "file://" component.
-			   (concat "file://" (expand-file-name raw-path)))))
+			   ;; with "file:" component.
+			   (concat "file:" path))))
 		      (t raw-path))))
 	       (if (not contents) (format "<%s>" path)
 		 (format "[%s](%s)" contents path)))))))

+ 2 - 4
lisp/ox-odt.el

@@ -2713,10 +2713,8 @@ INFO is a plist holding contextual information.  See
 	 (path (cond
 		((member type '("http" "https" "ftp" "mailto"))
 		 (concat type ":" raw-path))
-		((string= type "file")
-		 (if (file-name-absolute-p raw-path)
-		     (concat "file://" (expand-file-name raw-path))
-		   (concat "file://" raw-path)))
+		((and (string= type "file") (file-name-absolute-p raw-path))
+		 (concat "file:" raw-path))
 		(t raw-path)))
 	 ;; Convert & to &amp; for correct XML representation
 	 (path (replace-regexp-in-string "&" "&amp;" path))

+ 2 - 4
lisp/ox-texinfo.el

@@ -1222,10 +1222,8 @@ INFO is a plist holding contextual information.  See
 	 (path (cond
 		((member type '("http" "https" "ftp"))
 		 (concat type ":" raw-path))
-		((string= type "file")
-		 (if (file-name-absolute-p raw-path)
-		     (concat "file://" (expand-file-name raw-path))
-		   (concat "file://" raw-path)))
+		((and (string= type "file") (file-name-absolute-p raw-path))
+		 (concat "file:" raw-path))
 		(t raw-path)))
 	 (email (if (string= type "mailto")
 		    (let ((text (replace-regexp-in-string