Fix fuzzy link escaping

* lisp/org.el (org-make-link-string): Properly escape square brackets
  and percent sings in fuzzy links.

* testing/lisp/test-org-clock.el (test-org-clock/clocktable/link):
  Update tests.

Reported-by: Paulo Matos <paulo@matos-sorge.com>
<http://lists.gnu.org/r/emacs-orgmode/2017-12/msg00269.html>
This commit is contained in:
Nicolas Goaziou 2017-12-14 22:39:54 +01:00
parent 263a0cf00e
commit fe98379fce
2 changed files with 6 additions and 8 deletions

View File

@ -9959,14 +9959,12 @@ according to FMT (default from `org-email-link-description-format')."
(let ((uri (cond ((string-match org-link-types-re link)
(concat (match-string 1 link)
(org-link-escape (substring link (match-end 1)))))
;; For readability, url-encode internal links only
;; when absolutely needed (i.e, when they contain
;; square brackets). File links however, are
;; encoded since, e.g., spaces are significant.
((or (file-name-absolute-p link)
(string-match-p "\\`\\.\\.?/\\|[][]" link))
(string-match-p "\\`\\.\\.?/" link))
(org-link-escape link))
(t link)))
;; For readability, do not encode space characters
;; in fuzzy links.
(t (org-link-escape link (remq ?\s org-link-escape-chars)))))
(description
(and (org-string-nw-p description)
;; Remove brackets from description, as they are fatal.

View File

@ -640,7 +640,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
|--------------+---------|
| *Total time* | *26:00* |
|--------------+---------|
| [[Foo%20%5B%5Bhttp://orgmode.org%5D%5BOrg%20mode%5D%5D][Foo Org mode]] | 26:00 |"
| [[Foo %5B%5Bhttp://orgmode.org%5D%5BOrg mode%5D%5D][Foo Org mode]] | 26:00 |"
(org-test-with-temp-text
"* Foo [[http://orgmode.org][Org mode]]
CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
@ -651,7 +651,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
|------------------------+---------|
| *Total time* | *26:00* |
|------------------------+---------|
| [[Foo%20%5B%5Bhttp://orgmode.org%5D%5D][Foo http://orgmode.org]] | 26:00 |"
| [[Foo %5B%5Bhttp://orgmode.org%5D%5D][Foo http://orgmode.org]] | 26:00 |"
(org-test-with-temp-text
"* Foo [[http://orgmode.org]]
CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"