diff --git a/doc/org-manual.org b/doc/org-manual.org index c332f90f1..8813f4944 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -17806,6 +17806,10 @@ from the reference. : :var NAME=FILE:REFERENCE +When =FILE= does not exist, the reference is searched in the current +file, using the verbatim reference. This way, +=:var table=tbl:example= will be searched inside the current buffer. + Here are examples of passing values by reference: - table :: diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 19117821a..1207d6fca 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -13,6 +13,12 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org. * Version 9.7 (not released yet) ** Important announcements and breaking changes +*** Babel references =FILE:REFERENCE= now search current buffer when =FILE= does not exist + +When =FILE= does not exist, the reference is searched in the current +file, using the verbatim reference. This way, +=:var table=tbl:example= will be searched inside the current buffer. + *** New export option ~org-export-expand-links~ The new option makes Org expand environment variables in link and INCLUDE paths. diff --git a/lisp/ob-ref.el b/lisp/ob-ref.el index fd6927ccf..b7858569a 100644 --- a/lisp/ob-ref.el +++ b/lisp/ob-ref.el @@ -156,8 +156,9 @@ Emacs Lisp representation of the value of the variable." (when (string-match "^\\(.+\\):\\(.+\\)$" ref) (setq split-file (match-string 1 ref)) (setq split-ref (match-string 2 ref)) - (find-file split-file) - (setq ref split-ref)) + (when (file-exists-p split-file) + (find-file split-file) + (setq ref split-ref))) (org-with-wide-buffer (goto-char (point-min)) (let* ((params (append args '((:results . "none"))))