emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Tor-björn Claesson" <tclaesson@gmail.com>
To: Ihor Radchenko <yantar92@posteo.net>, emacs-orgmode@gnu.org
Subject: Re: Org-cite: Replace basic follow-processor with transient menu?
Date: Tue, 22 Oct 2024 10:23:26 +0300	[thread overview]
Message-ID: <87a5ewfvo1.fsf@gmail.com> (raw)
In-Reply-To: <87r08lqlbu.fsf@localhost> (Ihor Radchenko's message of "Sat, 12 Oct 2024 17:31:49 +0000")

Ihor Radchenko <yantar92@posteo.net> writes:
> 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.

Here is a solution that works for me. Is this an OK use of eval, or is
there a better way of doing this?

(defcustom org-cite-basic-follow-actions
  '[["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)]]
  "Contents of the org-cite-basic-follow transient menu. 

This can be customized directly using the customization 
interface. Use setopt instead of setq if you change this option 
in elisp, to ensure that the transient is rebuilt.

Further  actions can be added using transient-define-suffix."
  :group 'org-cite
  :type 'sexp
  :set (lambda (option-name new-value)
         (eval
          `(transient-define-prefix org-cite-basic-follow (citation &optional prefix)
             "Follow a citation reference.

The contents of this transient menu is set in org-cite-basic-follow-actions."
             ,new-value
             (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))))
         (set-default-toplevel-value option-name new-value)))

>> (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)
>

Ah, thanks!

>> 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.

The lambda form is much neater with your (transient-scope) suggestion:
(lambda (citation prefix)
        (interactive (transient-scope))
        ...)

Is this simple enough? I don't feel a macro would improve the
situation.

Best regards,
Tor-björn


  reply	other threads:[~2024-10-22  7:24 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-14 12:36 Org-cite: Replace basic follow-processor with transient menu? Tor-björn Claesson
2024-09-15 14:36 ` Ihor Radchenko
2024-09-17 12:18   ` Tor-björn Claesson
2024-09-22 12:50     ` Ihor Radchenko
2024-09-24 10:07       ` Tor-björn Claesson
2024-10-12 17:31         ` Ihor Radchenko
2024-10-22  7:23           ` Tor-björn Claesson [this message]
2024-10-22 17:58             ` Ihor Radchenko
2024-10-24 14:18             ` Jonas Bernoulli
2024-10-24 17:32               ` Ihor Radchenko
2024-10-26 11:45                 ` Jonas Bernoulli
2024-10-27  8:09                   ` Ihor Radchenko
2024-10-27  9:17                     ` Tor-björn Claesson
2024-10-29  4:58                   ` Tor-björn Claesson
2024-10-29 18:55                     ` Ihor Radchenko
2024-10-30  5:37                       ` Tor-björn Claesson
2024-10-30 18:43                         ` Ihor Radchenko
2024-10-31 18:55                           ` Tor-björn Claesson
2024-10-31 19:05                             ` Ihor Radchenko
2024-10-31 20:47                               ` Tor-björn Claesson
2024-11-01  8:27                                 ` Tor-björn Claesson
2024-11-01 17:08                                   ` Ihor Radchenko
2024-11-02 19:04                                     ` Tor-björn Claesson
2024-11-02 19:21                                       ` Ihor Radchenko
2024-11-02 21:37                                         ` Tor-björn Claesson
2024-11-03  7:40                                           ` Ihor Radchenko
2024-11-05 10:07                                             ` Tor-björn Claesson
2024-11-09 14:08                                               ` Ihor Radchenko
2024-11-10 16:33                                                 ` Tor-björn Claesson
2024-11-10 16:41                                                   ` Ihor Radchenko
2024-11-11 10:03                                                     ` Tor-björn Claesson
2024-11-11 15:52                                                       ` Ihor Radchenko
2024-11-12  9:26                                                         ` Tor-björn Claesson
2024-11-12 18:03                                                           ` Ihor Radchenko
     [not found]                                                             ` <CAO0k703a5SCv4Eaogjs-14zgmTi-pK5qqG=8VzB8+7h-kcC8yg@mail.gmail.com>
     [not found]                                                               ` <87wmh8s358.fsf@localhost>
     [not found]                                                                 ` <87y11nwp9z.fsf@gmail.com>
2024-11-17  9:30                                                                   ` Fwd: " Tor-björn Claesson
2024-11-23 16:41                                                                     ` Ihor Radchenko
2024-11-25 17:49                                                                       ` Tor-björn Claesson
2024-12-10 19:11                                                                         ` Ihor Radchenko
2024-12-11  9:57                                                                           ` Tor-björn Claesson
2024-12-11 10:05                                                                           ` Tor-björn Claesson
2024-12-13 18:41                                                                             ` [RFC] The best way to choose an "action" at point: context-menu-mode, transient, which-key or embark? (was: Fwd: Org-cite: Replace basic follow-processor with transient menu?) Ihor Radchenko
2024-12-13 22:09                                                                               ` [RFC] The best way to choose an "action" at point: context-menu-mode, transient, which-key or embark? Gabriel Santos
2024-12-14  9:57                                                                                 ` Ihor Radchenko
2024-12-14 10:59                                                                                   ` Gabriel Santos
2024-12-14 13:10                                                                                     ` Ihor Radchenko
2024-12-13 22:57                                                                               ` Suhail Singh
2024-12-14  9:59                                                                                 ` Ihor Radchenko
2024-12-14 14:30                                                                                   ` Suhail Singh
2024-12-14  1:16                                                                               ` [RFC] The best way to choose an "action" at point: context-menu-mode, transient, which-key or embark? (was: Fwd: Org-cite: Replace basic follow-processor with transient menu?) Panayotis Manganaris
2024-12-14 10:08                                                                                 ` Ihor Radchenko
2024-12-15 21:20                                                                                   ` Samuel Wales
2024-12-16 17:54                                                                                     ` Ihor Radchenko
2024-12-17  2:08                                                                                       ` Samuel Wales
2024-12-17  2:24                                                                                         ` Samuel Wales
2024-12-17 18:04                                                                                         ` Transient: accessibility problems for users who need to use large fonts (was: [RFC] The best way to choose an "action" at point: context-menu-mode, transient, which-key or embark? (was: Fwd: Org-cite: Replace basic follow-processor with transient menu?)) Ihor Radchenko
2024-12-18  7:19                                                                                           ` Samuel Wales
2024-12-18 10:52                                                                                             ` Jonas Bernoulli
2024-12-19  1:42                                                                                               ` Samuel Wales
2024-12-19  1:50                                                                                               ` Samuel Wales
2024-12-18 17:59                                                                                             ` Ihor Radchenko
2024-12-19  1:48                                                                                               ` Samuel Wales
2024-12-19 18:04                                                                                                 ` [FR] Allow SPC to scroll todo/tag selection menu - for users with huge accessible fonts (was: Transient: accessibility problems for users who need to use large fonts (was: [RFC] The best way to choose an "action" at point: context-menu-mode, transient, which-key or embark? (was: Fwd: Org-cite: Replace basic follow-processor with transient menu?))) Ihor Radchenko
2024-12-20  6:55                                                                                                   ` Samuel Wales
2024-12-18 10:47                                                                                         ` [RFC] The best way to choose an "action" at point: context-menu-mode, transient, which-key or embark? (was: Fwd: Org-cite: Replace basic follow-processor with transient menu?) Jonas Bernoulli
2024-12-19 18:11                                                                                           ` Alternative defaults for visually impaired users? (was: [RFC] The best way to choose an "action" at point: context-menu-mode, transient, which-key or embark? (was: Fwd: Org-cite: Replace basic follow-processor with transient menu?)) Ihor Radchenko
2024-12-14 10:50                                                                               ` [RFC] The best way to choose an "action" at point: context-menu-mode, transient, which-key or embark? indieterminacy
2024-12-14 17:53                                                                               ` Juri Linkov
2024-12-15  9:07                                                                                 ` Ihor Radchenko
2024-12-16  7:46                                                                                   ` Juri Linkov
2024-12-16 18:06                                                                                     ` Ihor Radchenko
2024-12-22 12:16                                                                                       ` Tor-björn Claesson
     [not found]                                                                                         ` <87h66ult46.fsf@localhost>
2024-12-24  7:04                                                                                           ` Juri Linkov
2024-12-24 11:39                                                                                             ` Tor-björn Claesson
2024-12-15 18:23                                                                               ` Kierin Bell
2024-12-17 17:23                                                                                 ` Ihor Radchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87a5ewfvo1.fsf@gmail.com \
    --to=tclaesson@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=yantar92@posteo.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).