This is a great learning experience, thank you Ihor and Jonas for the
friendly feedback!
(defcustom org-cite-basic-follow-actions
'[["Open"
("b" "bibliography entry" org-cite-basic-goto (list (transient-scope) 0))]
["Copy"
("d" "DOI" org-cite-basic-follow.copy-doi)]
["Browse"
("u" "url" org-cite-basic-follow.browse-url)]]
"Hepp"
:group 'org-cite
:type 'sexp)
The bibliography entry demonstrates using any function (a bit ugly since
org-cite-basic-goto insists on the prefix argument).
(transient-define-prefix org-cite-basic-follow (citation &optional prefix)
[:class transient-columns
:setup-children org-cite-basic-follow--setup
:pad-keys t]
(interactive)
(if org-cite-basic-follow-ask
(transient-setup 'org-cite-basic-follow nil nil
:scope (list citation))
(org-cite-basic-goto citation prefix)))
Here I removed activating the transient menu if a prefix argument is
present. If org-cite-basic-follow-ask is nil (the default) and I want
to call org-cite-basic-goto with a prefix argument, this would cause the
transient menu to activate, which seems wrong.
(defun org-cite-basic-follow--setup (_)
(transient-parse-suffixes
'org-cite-basic-follow
(cl-map 'vector (lambda (group)
(cl-map 'vector (lambda (entry)
(pcase entry
((and (pred stringp) label)
label)
(`(,key ,desc ,fn ,transform)
(list key desc `(lambda ()
(interactive)
(apply ',fn ,transform))))
(`(,key ,desc ,suffix)
(list key desc suffix))))
group))
org-cite-basic-follow-actions)))
Prefixes of :class transient-columns expect a vector of vectors of a string and
lists, so we need to use a map that produces vectors.
This works. Do the code look OK to you? I'll prepare a patch if that is the
case.
Cheers,
Tor-björn