emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Adding transient to Emacs core


From: Jonas Bernoulli
Subject: Re: Adding transient to Emacs core
Date: Tue, 27 Apr 2021 23:11:27 +0200

Philip Kaludercic <philipk@posteo.net> writes:

> At the same time it does not seem obvious why, especially with transient
> menus that may contain a lot of options (say a ffmpeg interface)
> shouldn't be able to use the entire frame. Especially from a user
> perspective.

It is of course possible that a certain transient menu only features
suffix commands that do not care which buffer/window/frame is current.
And in the future I might add a feature that would allow the author of
such a menu to indicate that that is the case and that the entire frame
should be used to display that particular menu. But that a potential new
feature and not what we are currently discussing.

>> If the selected window were repurposed to display transient's buffer,
>> then that would change what buffer is the current buffer and it would
>> become impossible to act on the buffer that was previously the current
>> buffer or on "the thing under the cursor" in that buffer.
>
> What do you mean by "what buffer is the current buffer"? I am somewhat
> confused by what you are trying to say here.

Would it be less confusing if instead I had said "WHICH buffer is the
current buffer"?  I don't think I can describe this any better; maybe
someone else can.  I'm having problems understanding what you find
confusing about that paragraph.

>> Re-purposing the selected window would massively reduce the usefulness
>> of a huge number of commands or even make them completely useless.
>
> Again, I do not see how this follows? My verison of Magit has
> magit-display-buffer-function, that allows me to display the buffer in
> the selected window, with no loss of functionality.  What does
> transient do or need that prevents this?

As I have tried (and apparently failed) to explain earlier, it is
important to some suffix commands that the same thing is current at the
time they are invoked as was current when the menu was entered using the
prefix command.

This is true regardless of whether Magit-Popup or Transient is used,
but these two implementation differ in how they ensure this:

- Magit-Popup does it by (1) remembering what buffer is current by
  recording the current window configuration when the prefix is invoked
  but before actually displaying the menu in a buffer.  Later when the
  user invokes a suffix, it (2) intercepts that action in order to (3)
  restore the saved window configuration before (4) actually invoking
  the suffix command using `call-interactively'.

- Transient ensures that the buffer that was current before the menu was
  displayed, simply by not messing that up in the first place.

So yes, Magit-Popup can make the menu buffer the current buffer "with no
loss of functionality", but that is only the case because it explicitly
makes sure the old window-configuration is restored before it matters.

Ultimately it does not matter: everything that is possible with one
approach is also possible with the other, but having implemented both,
I do have a favorite.

It would be useful if users would describe the concrete behaviors that
they find undesirable, instead of criticizing implementation details
they might not fully understand.  There has been a lot of concrete,
actionable feedback in the past and I have listened to that and made
improvements in response.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]