unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Panayotis Manganaris <panos.manganaris@gmail.com>
To: "Ihor Radchenko" <yantar92@posteo.net>,
	"Tor-björn Claesson" <tclaesson@gmail.com>,
	emacs-devel@gnu.org
Cc: emacs-orgmode@gnu.org, "Philip Kaludercic" <philipk@posteo.net>,
	"Omar Antolín Camarena" <omar@matem.unam.mx>,
	"Jonas Bernoulli" <emacs.transient@jonas.bernoulli.dev>,
	"Juri Linkov" <juri@linkov.net>,
	karthikchikmagalur@gmail.com, Visuwesh <visuweshm@gmail.com>,
	charles.choi@yummymelon.com, "Justin Burkett" <justin@burkett.cc>
Subject: Re: [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?)
Date: Fri, 13 Dec 2024 20:16:34 -0500	[thread overview]
Message-ID: <87v7vn12tp.fsf@ASCALON.mail-host-address-is-not-set> (raw)
In-Reply-To: <87msgzh1dh.fsf@localhost>


Hello. I'm very much an elisp amateur, but one of my main motives for
learning has been to make use of emacs' many beautiful UI systems.

Therefore, I'll provide my comments from a designer perspective and
avoid implementation detail.

Ihor Radchenko <yantar92@posteo.net> writes:

> TL;DR: We are in the process of designing a more unified selection
> interface for Org mode

Thanks to Tor-björn, Jonas, Ihor, and everyone else for this work. I've
learned much by following this thread.

> a number of people raised concerns that transient may sometimes be an
> overkill

I agree with others that transient is overkill for most of the menus in
org-mode. A counter argument, going by the patches exchanged here, might
be that transient menus are a clean and scalable approach.

I've not tried the in-dev transient follow processor, but I imagine it
is similar to the old org-ref (John Kitchin) hydra menu. I used org-ref
for years, and enjoyed how its menu united many features, including
- a system analogous to org-cite follow processors for navigating to sources/notes
- a system akin to reftex-mode for org
- a system for downloading new references and making new bibliography entries

With this level of complexity, a transient menu seems like the modern
weapon of choice for a similar feature set. Only, wait, I stopped using
org-ref.

Long story short, I concluded that treating org-mode like a nexus for
these intertwined features was, at least, encouraging my bad habit of
treating org-mode as an "everything app."

I have since delegated the task of populating my personal library to a
dedicated reference manager. I started using latex-mode and reftex to
write papers, thus gaining more typesetting control and making version
management much easier. I still use org to take notes, but now enjoy a
much more stable and focused configuration.

I tell this story as an (anecdotal) case study for how a powerful menu
can be less productive in the long run. Org-ref's hydra menu is not to
blame for my bad decisions but, at least in-part, I used it (and even
extended it) because a greater man put it there.

Scalable design is an invitation to scale. Perhaps the wise know better.
Anyway, the simple tasks of navigating from a citation link to a copy of
the original document, its URL, or an associated note is achievable with
a completing-read (helm, counsel, vertico, etc.) interface.

Transient is overkill.

> This UI flow can be implemented using context menus [...] embark

I like org's context menus, but I like embark better. I do think it
would be very generous of org to delegate its own contextual actions to
embark if so configured.

I'll elaborate:

As is, I like to run org-babel code block functions through embark, I
only wish there were more of them to run. I find this to be far superior
in every way to binding equivalent key chords for the mode.

Also, for me, embark-bindings and embark-prefix-help-command have
completely replaced which-key for discovering key bindings on-the-fly.

> I am wondering if we can work out some universal API to plug the
> described action->menu->selection model into the UI that user prefers.

I support this idea in principle.

> 1. List of possible actions: ((name1 . action1 props) (name2 . action2 ...) ...)
>    PROPS is a plist defining extra properties like key-binding, display
>    string, maybe something else to be used in the future.

I would focus on associating just enough metadata with functions to
enable using them with embark. I really have no idea what the best way
to do this is. This seems to be the biggest missing piece.

Maybe in the short term we just crowd-source some embark configuration
on WORG.

Menus should of course be useful without embark. If the goal here is to
deprecate many of org's ad-hoc interfaces, I think the natural default
replacement for most is completing-read. I may be completely wrong.

> 2. Menu interface to use (transient, context-menu, embark, which-key)

It seems like Tor-björn and Ihor have already laid the groundwork for
using transient in this way. So, I'll just say bravo. Regardless of my
opinion on transient overuse, it looks like great work.

On the other hand, e.g. if the org export dispatch menu isn't transient,
it should be. Seems obvious to me.

> 3. Layout settings for the specific interfaces. For example, transient
>    layout definition.

It is important to avoid making more org-mode-specific UI abstractions.
Whatever the solution, it is important that the UI implementations
tapped to take over help share the maintenance burden.

In this way, I reckon most interface customization can be done in hooks.

> WDYT?

Ideally org-mode uses established APIs rather than making another.

Thanks for reading, and thanks for the chance to contribute.



  parent reply	other threads:[~2024-12-14  1:16 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <8734m28l9a.fsf@gmail.com>
     [not found] ` <874j6h3rw8.fsf@localhost>
     [not found]   ` <877cbamq2q.fsf@gmail.com>
     [not found]     ` <87cykvrgwr.fsf@localhost>
     [not found]       ` <8734lpmkjn.fsf@gmail.com>
     [not found]         ` <87r08lqlbu.fsf@localhost>
     [not found]           ` <87a5ewfvo1.fsf@gmail.com>
2024-10-22 17:58             ` Org-cite: Replace basic follow-processor with transient menu? Ihor Radchenko
     [not found] ` <87wmhlmp83.fsf@gmail.com>
     [not found]   ` <871pzte929.fsf@localhost>
     [not found]     ` <87v7x548ri.fsf@gmail.com>
     [not found]       ` <87y120daue.fsf@localhost>
     [not found]         ` <874j4m9ep6.fsf@gmail.com>
     [not found]           ` <87h68gfqj1.fsf@localhost>
     [not found]             ` <CAO0k701CGFnQwCCuODjTFuf=OTsj9Vdqg+COP8nkpJg0wL_hQg@mail.gmail.com>
     [not found]               ` <87pln3f3cc.fsf@localhost>
     [not found]                 ` <CAO0k7006goK-AfhG+3PVwhz=4QU_DMm+5edmATZpjdRHkj61Bg@mail.gmail.com>
     [not found]                   ` <87jzd9ojj0.fsf@localhost>
     [not found]                     ` <87cyj0ajm9.fsf@gmail.com>
     [not found]                       ` <87zfm4s50x.fsf@localhost>
     [not found]                         ` <CAO0k703a5SCv4Eaogjs-14zgmTi-pK5qqG=8VzB8+7h-kcC8yg@mail.gmail.com>
     [not found]                           ` <87wmh8s358.fsf@localhost>
     [not found]                             ` <87y11nwp9z.fsf@gmail.com>
     [not found]                               ` <CAO0k702GsRi-h8BEY08kpf5FzMxi_MvRygNXJCyFnbtaC-a59w@mail.gmail.com>
     [not found]                                 ` <87v7wd9a2h.fsf@localhost>
     [not found]                                   ` <878qt7fbki.fsf@gmail.com>
     [not found]                                     ` <87o71jwdxz.fsf@localhost>
     [not found]                                       ` <87wmg6edr0.fsf@gmail.com>
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-13 22:57                                           ` Suhail Singh
2024-12-14  9:59                                             ` Ihor Radchenko
2024-12-14  1:16                                           ` Panayotis Manganaris [this message]
2024-12-14 10:08                                             ` [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  0:37 [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?) Psionic K
2024-12-14  9:48 ` 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.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=87v7vn12tp.fsf@ASCALON.mail-host-address-is-not-set \
    --to=panos.manganaris@gmail.com \
    --cc=charles.choi@yummymelon.com \
    --cc=emacs-devel@gnu.org \
    --cc=emacs-orgmode@gnu.org \
    --cc=emacs.transient@jonas.bernoulli.dev \
    --cc=juri@linkov.net \
    --cc=justin@burkett.cc \
    --cc=karthikchikmagalur@gmail.com \
    --cc=omar@matem.unam.mx \
    --cc=philipk@posteo.net \
    --cc=tclaesson@gmail.com \
    --cc=visuweshm@gmail.com \
    --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.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).