Stefano Ghirlanda <dr.ghirla...@gmail.com> writes: > I have run into an inconvenience in that colons in :var header > arguments to source blocks are invariably interpreted as referring to > another file. However, I use cleveref in LaTeX export (via org-ref) to > automatically format references using labels like tab:data, and in > these cases :var data=tab:data gives a reference not found because tab > is interpreted as a filename.
I agree that it is a problem. Attaching tentative patch that will make Org babel fall back to searching in current file when FILE in FILE:REF does not exist. It is technically a breaking change. If this is affecting someone's workflow, please chime in.
>From 024cc1e6b31e9e3e9e4b8d3aee83221cb3326ee2 Mon Sep 17 00:00:00 2001 Message-ID: <024cc1e6b31e9e3e9e4b8d3aee83221cb3326ee2.1697883034.git.yanta...@posteo.net> From: Ihor Radchenko <yanta...@posteo.net> Date: Sat, 21 Oct 2023 13:08:55 +0300 Subject: [PATCH] org-babel-ref-resolve: Search current buffer when FILE in FILE:REF does not exist * lisp/ob-ref.el (org-babel-ref-resolve): Only search in other file when FILE in FILE:REF exists. * doc/org-manual.org (Passing arguments): * etc/ORG-NEWS (Babel references =FILE:REFERENCE= now search current buffer when =FILE= does not exist): Document the change. Reported-by: Stefano Ghirlanda <dr.ghirla...@gmail.com> Link: https://orgmode.org/list/cak_gy-q4f82dbdqgys+ffyeqahamxhqygq3e6zswnej-+eo...@mail.gmail.com --- doc/org-manual.org | 4 ++++ etc/ORG-NEWS | 6 ++++++ lisp/ob-ref.el | 5 +++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/doc/org-manual.org b/doc/org-manual.org index c0e9c8d7e..9a51a38a1 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -17764,6 +17764,10 @@ *** Passing arguments : :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 985488016..f64081964 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 @@ (defun org-babel-ref-resolve (ref) (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")))) -- 2.42.0
-- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>