Ihor Radchenko <yanta...@posteo.net> writes: > Tor-björn Claesson <tclaes...@gmail.com> writes: > >>> I do think that having extended menus for org-open-at-point could be >>> useful. Not by default, but, for example, with a prefix argument. >>> >> This is a good point, but of much larger scope than just replacing the >> follower of the basic citation-processor. > > No problem. But my idea may still be used - without prefix argument, > just move to citation record; with prefix argument - invoke the menu. > > Follow processors are provided with prefix argument passed to > `org-open-at-point': > > (defun org-cite-basic-goto (datum _)... > > The "_" argument is the currently ignored prefix argument. >
Ah, I did not understand. Thanks for explaining! This has the nice effect of not changing the previous behaviour. I think this should be customizeable. >> I have played some more with this - would it be a good idea to include >> macros to get citekey, datum and _? I would be happy to clean this up a >> bit, add DOI/ISBN/URL-functionality, documentation and prepare a bug >> report/patch. >> >> (defmacro org-cite-basic-follow--citekey () >> '(org-element-property :key (car (oref (transient-prefix-object) scope)))) >> >> (defmacro org-cite-basic-follow--datum () >> '(car (oref (transient-prefix-object) scope))) >> >> (defmacro org-cite-basic-follow--_ () >> '(cadr (oref (transient-prefix-object) scope))) >> >> (transient-define-prefix org-cite-basic-follow (datum _) >> "How should we follow references?" >> [["Open" >> ("b" "bibliography entry" >> (lambda () >> (interactive) >> (org-cite-basic-goto >> (org-cite-basic-follow--datum) >> (org-cite-basic-follow--_))))] > > This looks way too complicated. > Is there an easier way to access transient prefix command arguments from > suffixes? Maybe something provided by transient itself? Yes it was way to complicated, thanks! A better way can be found reading transient.el and magit sources. Together with your other feedback, I now have: (defcustom org-cite-basic-follow-ask nil "Should org-cite-basic ask how to follow citations?" :group 'org-cite :type 'boolean) (transient-define-prefix org-cite-basic-follow (citation &optional prefix) "Follow a citation reference. New actions can be added using transient-append-suffix. The body of such new actions should have the form: (lambda (citation prefix) (interactive (oref (transient-prefix-object) scope)) ...)" [["Open" ("b" "bibliography entry" org-cite-basic-follow.open-bibliography)] ["Copy" ("d" "DOI" org-cite-basic-follow.copy-doi)] ["Browse" ("u" "url" org-cite-basic-follow.browse-url)]] (interactive) (if (or org-cite-basic-follow-ask prefix) (transient-setup 'org-cite-basic-follow nil nil :scope (list citation prefix)) (org-cite-basic-goto citation prefix))) (transient-define-suffix org-cite-basic-follow.open-bibliography (citation prefix) "Find bibliography entry for citation" (interactive (oref (transient-prefix-object) scope)) (org-cite-basic-goto citation prefix)) ... And I can then for example add my own pdf-action like this: (transient-append-suffix 'org-cite-basic-follow "b" '("p" "pdf" (lambda (citation prefix) (interactive (oref (transient-prefix-object) scope)) (find-file-other-window (concat tbc/projektet "Referensartiklar" "/" (org-element-property :key citation) ".pdf"))))) Does this start to look ok, and is there something else I should address if this was to be included in org-mode? Cheers, Tor-björn