summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2015-09-26 00:04:05 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2015-09-26 00:11:42 +0200
commitfd8a18151a7a64ded36c169f03c76bf96733bfd9 (patch)
tree2eb5f049ab003dca98e305bb142ff7bbb82910d8
parente68bc78ae404b1524e92986dc7ff71826c235e73 (diff)
downloadorg-mode-fd8a18151a7a64ded36c169f03c76bf96733bfd9.tar.gz
Fix file urirelease_8.3.2
* lisp/ox.el (org-export-file-uri): Properly expand file uri. * lisp/org-element.el (org-element-link-parser): Start path with "//" when referring to a remote file. * testing/lisp/test-ox.el (test-org-export/file-uri): Add test. Reported-by: AW <alexander.willand@t-online.de> <http://permalink.gmane.org/gmane.emacs.orgmode/101471>
-rw-r--r--lisp/org-element.el4
-rw-r--r--lisp/ox.el10
-rw-r--r--testing/lisp/test-ox.el2
3 files changed, 8 insertions, 8 deletions
diff --git a/lisp/org-element.el b/lisp/org-element.el
index b1d5911..1fbedd1 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -3125,13 +3125,13 @@ Assume point is at the beginning of the link."
(when (string-match "::\\(.*\\)\\'" path)
(setq search-option (match-string 1 path))
(setq path (replace-match "" nil nil path)))
- (setq path (replace-regexp-in-string "\\`/+" "/" path)))
+ (setq path (replace-regexp-in-string "\\`///+" "/" path)))
;; Translate link, if `org-link-translation-function' is set.
(let ((trans (and (functionp org-link-translation-function)
(funcall org-link-translation-function type path))))
(when trans
(setq type (car trans))
- (setq path (cdr trans))))
+ (setq path (cdr trans))))
(list 'link
(list :type type
:path path
diff --git a/lisp/ox.el b/lisp/ox.el
index 0adbdf2..e2fa4be 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -4199,12 +4199,10 @@ has type \"radio\"."
(defun org-export-file-uri (filename)
"Return file URI associated to FILENAME."
- (if (not (file-name-absolute-p filename)) filename
- (concat "file:/"
- (and (not (org-file-remote-p filename)) "/")
- (if (org-string-match-p "\\`~" filename)
- (expand-file-name filename)
- filename))))
+ (cond ((org-string-match-p "\\`//" filename) (concat "file:" filename))
+ ((not (file-name-absolute-p filename)) filename)
+ ((org-file-remote-p filename) (concat "file:/" filename))
+ (t (concat "file://" (expand-file-name filename)))))
;;;; For References
diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el
index ccffa89..5dee887 100644
--- a/testing/lisp/test-ox.el
+++ b/testing/lisp/test-ox.el
@@ -2728,6 +2728,8 @@ Another text. (ref:text)
;; Remote files start with "file://"
(should (equal "file://myself@some.where:papers/last.pdf"
(org-export-file-uri "/myself@some.where:papers/last.pdf")))
+ (should (equal "file://localhost/etc/fstab"
+ (org-export-file-uri "//localhost/etc/fstab")))
;; Expand filename starting with "~".
(should (equal (org-export-file-uri "~/file.org")
(concat "file://" (expand-file-name "~/file.org")))))