diff options
author | Kyle Meyer <kyle@kyleam.com> | 2020-06-08 20:25:22 -0400 |
---|---|---|
committer | Kyle Meyer <kyle@kyleam.com> | 2020-06-08 20:25:22 -0400 |
commit | 3ebee033103ccd3c3e8c354bad01c15332b9d901 (patch) | |
tree | 2c89ee6f544815495d153e58dbbf0840b4e5204a | |
parent | 706970efb1d86cf5a8e2eba3d8cd894138a0c333 (diff) | |
download | org-mode-3ebee033103ccd3c3e8c354bad01c15332b9d901.tar.gz |
ob-tangle: Restore handling of relative file links
* lisp/ob-tangle.el (org-babel-tangle-single-block): Fix regression
from v9.0.2 that resulted in org-babel-tangle-use-relative-file-links
being ignored.
* testing/lisp/test-ob-tangle.el
(ob-tangle/comment-links-relative-file): Add test.
As of 7b148e2d0 (ob-tangle: Respect buffer local variables,
2016-12-10), the condition in org-babel-tangle-single-block that
checks whether to return a file link with a relative target always
returns nil because the full org-link-types-re match, including the
final colon, is compared with "file" (no colon). Also, were this
condition to succeed, "file:" would be used as the file name.
Adjust the condition and fix the extracted file name.
Reported-by: Jeremias Gonzalez <jgonzalez49@ucmerced.edu>
https://orgmode.org/list/6fb12326-52d3-7177-eff5-62603261b388@ucmerced.edu
-rw-r--r-- | lisp/ob-tangle.el | 4 | ||||
-rw-r--r-- | testing/lisp/test-ob-tangle.el | 37 |
2 files changed, 39 insertions, 2 deletions
diff --git a/lisp/ob-tangle.el b/lisp/ob-tangle.el index 9460398..1fb26a7 100644 --- a/lisp/ob-tangle.el +++ b/lisp/ob-tangle.el @@ -471,9 +471,9 @@ non-nil, return the full association list to be used by file) (if (and org-babel-tangle-use-relative-file-links (string-match org-link-types-re link) - (string= (match-string 0 link) "file")) + (string= (match-string 1 link) "file")) (concat "file:" - (file-relative-name (match-string 1 link) + (file-relative-name (substring link (match-end 0)) (file-name-directory (cdr (assq :tangle params))))) link) diff --git a/testing/lisp/test-ob-tangle.el b/testing/lisp/test-ob-tangle.el index 301f7af..df45c97 100644 --- a/testing/lisp/test-ob-tangle.el +++ b/testing/lisp/test-ob-tangle.el @@ -120,6 +120,43 @@ echo 1 (search-forward "[H:2]]" nil t)))) (delete-file "test-ob-tangle.el"))))) +(ert-deftest ob-tangle/comment-links-relative-file () + "Test relative file name handling when commenting with links." + (should + (org-test-with-temp-text-in-file + "* H +#+header: :tangle \"test-ob-tangle.el\" :comments link +#+begin_src emacs-lisp +1 +#+end_src" + (unwind-protect + (let ((org-babel-tangle-use-relative-file-links t)) + (org-babel-tangle) + (with-temp-buffer + (insert-file-contents "test-ob-tangle.el") + (buffer-string) + (goto-char (point-min)) + (search-forward + (concat "[file:" (file-name-nondirectory file)) + nil t))) + (delete-file "test-ob-tangle.el")))) + (should + (org-test-with-temp-text-in-file + "* H +#+header: :tangle \"test-ob-tangle.el\" :comments link +#+begin_src emacs-lisp +1 +#+end_src" + (unwind-protect + (let ((org-babel-tangle-use-relative-file-links nil)) + (org-babel-tangle) + (with-temp-buffer + (insert-file-contents "test-ob-tangle.el") + (buffer-string) + (goto-char (point-min)) + (search-forward (concat "[file:" file) nil t))) + (delete-file "test-ob-tangle.el"))))) + (ert-deftest ob-tangle/jump-to-org () "Test `org-babel-tangle-jump-to-org' specifications." ;; Standard test. |