Tor-björn Claesson <tclaes...@gmail.com> writes: >> 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)))
Thanks! This looks much more clean. Even better would be having a defcustom that defines the transient layout. The idea is to avoid hard-coding [["Open" ... ] ["Copy" ...] ...] and instead make it defcustom. > (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)) > > ... (oref (transient-prefix-object) scope) is equivalent to (transient-scope) > 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"))))) It feels a bit too complex to demand knowledge of these transient details (how to get the arglist) from users. I am wondering if we can somehow plug the existing commands passing the arguments without any extra setup on the user side. -- 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>