From 436cd212507cc948af8de6f9e57b5e14e29f23dd Mon Sep 17 00:00:00 2001 From: bruno Date: Sun, 21 May 2023 15:53:42 -0300 Subject: [PATCH] lisp/org.el: allow org-return to call org-open-at-point on citations * lisp/org.el (org-return): When `org-return-follows-link' is non-nil and point is over an org-cite citation or citation reference, call `org-open-at-point'. TINYCHANGE --- etc/ORG-NEWS | 5 +++++ lisp/org-keys.el | 3 ++- lisp/org.el | 9 +++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 6b40198b5..ddf1e9110 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -221,6 +221,11 @@ Running shell blocks with the ~:session~ header freezes Emacs until execution completes. The new ~:async~ header allows users to continue editing with Emacs while a ~:session~ block executes. +*** ~org-return~ now acts on citations at point + +When ~org-return-follows-link~ is non-nil and cursor is over an +org-cite citation, ~org-return~ will call ~org-open-at-point~. + ** Miscellaneous *** =org-crypt.el= now applies initial visibility settings to decrypted entries diff --git a/lisp/org-keys.el b/lisp/org-keys.el index c62d62a1d..5f3ea8da3 100644 --- a/lisp/org-keys.el +++ b/lisp/org-keys.el @@ -299,7 +299,8 @@ implementation is bad." (defcustom org-return-follows-link nil "Non-nil means on links RET will follow the link. -In tables, the special behavior of RET has precedence." +In tables, the special behavior of RET has precedence. +On a timestamp or a citation, call `org-open-at-point'." :group 'org-link-follow :type 'boolean :safe #'booleanp) diff --git a/lisp/org.el b/lisp/org.el index 866af624e..8eab3ed22 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -17774,8 +17774,8 @@ When optional INDENT argument is non-nil, call and INTERACTIVE. When `org-return-follows-link' is non-nil and point is on -a timestamp or a link, call `org-open-at-point'. However, it -will not happen if point is in a table or on a \"dead\" +a timestamp, a link or a citation, call `org-open-at-point'. +However, it will not happen if point is in a table or on a \"dead\" object (e.g., within a comment). In these case, you need to use `org-open-at-point' directly." (interactive "i\nP\np") @@ -17795,8 +17795,8 @@ object (e.g., within a comment). In these case, you need to use (insert "\n") (org-table-justify-field-maybe) (call-interactively #'org-table-next-row))) - ;; On a link or a timestamp, call `org-open-at-point' if - ;; `org-return-follows-link' allows it. Tolerate fuzzy + ;; On a link, a timestamp or a citation, call `org-open-at-point' + ;; if `org-return-follows-link' allows it. Tolerate fuzzy ;; locations, e.g., in a comment, as `org-open-at-point'. ((and org-return-follows-link (or (and (eq 'link element-type) @@ -17808,6 +17808,7 @@ object (e.g., within a comment). In these case, you need to use (> (point) origin)))) (org-in-regexp org-ts-regexp-both nil t) (org-in-regexp org-tsr-regexp-both nil t) + (org-element-lineage context '(citation citation-reference)) (org-in-regexp org-link-any-re nil t))) (call-interactively #'org-open-at-point)) ;; Insert newline in heading, but preserve tags. -- 2.40.1