* A different way to interactively pass options to commands @ 2021-02-17 19:50 Clemens 2021-02-17 20:07 ` Stefan Monnier 2021-02-17 20:09 ` Lars Ingebrigtsen 0 siblings, 2 replies; 49+ messages in thread From: Clemens @ 2021-02-17 19:50 UTC (permalink / raw) To: emacs-devel Adjusting commands on call is traditionally done via universal prefix argument. This is mostly nice for numeric repetitions but often it is also used to change the behavior of a command in other ways and sometimes even multiple ways depending on the number of times `C-u` is used. The recent discussion around changing `interactive' made me think about ways to improve that. Magit has shown a real nice UI approach to pass options with its transient menus. Maybe a simpler but similar mechanism could be added which could also be configured via `interactive'. Any opinions on this? ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 19:50 A different way to interactively pass options to commands Clemens @ 2021-02-17 20:07 ` Stefan Monnier 2021-02-17 20:20 ` Lars Ingebrigtsen 2021-02-19 5:41 ` Richard Stallman 2021-02-17 20:09 ` Lars Ingebrigtsen 1 sibling, 2 replies; 49+ messages in thread From: Stefan Monnier @ 2021-02-17 20:07 UTC (permalink / raw) To: Clemens; +Cc: emacs-devel > The recent discussion around changing `interactive' made me think > about ways to improve that. Magit has shown a real nice UI approach to > pass options with its transient menus. Maybe a simpler but similar > mechanism could be added which could also be configured via > `interactive'. Any opinions on this? Yes, maybe. FWIW, there are other prefix commands than C-u. There's `C-x RET c`. In the `other-frame-window` GNU ELPA package there are such prefix commands to force the use of "other frame" or "other window" (arguably there could/should be one for "same window" as well). I personally also use the one below. Stefan (defun copy-next-command-output () "Prefix command to add the output of the next command to the `kill-ring`." (interactive) (let ((md (minibuffer-depth)) (marker (with-current-buffer "*Messages*" (point-max-marker)))) (cl-labels ((pre () (unless (> (minibuffer-depth) md) (add-hook 'post-command-hook #'post) (prepare))) (prepare () (with-current-buffer "*Messages*" (move-marker marker (point-max)))) (preserve () (unless (> (minibuffer-depth) md) (remove-hook 'post-command-hook #'post) (add-hook 'pre-command-hook #'pre))) (echo () (unless (> (minibuffer-depth) md) "[copy-output]")) (post () (if (> (minibuffer-depth) md) ;; Prepare, in case there's no pre-command-hook before ;; the next post-command-hook. E.g. in the case of ;; execute-extended-command. (prepare) (remove-hook 'pre-command-hook #'pre) (remove-hook 'post-command-hook #'post) (remove-hook 'prefix-command-preserve-state-hook #'preserve) (remove-hook 'prefix-command-echo-keystrokes-functions #'echo) (prefix-command-update) (with-current-buffer (marker-buffer marker) (when (< marker (point-max)) (kill-new (buffer-substring marker (point-max))))) (set-marker marker nil)))) (add-hook 'prefix-command-preserve-state-hook #'preserve) (add-hook 'prefix-command-echo-keystrokes-functions #'echo) ;; (message "BEFORE: prefix-arg=%S current-prefix-arg=%S" ;; prefix-arg current-prefix-arg) (prefix-command-preserve-state) ;; (message "AFTER: prefix-arg=%S current-prefix-arg=%S" ;; prefix-arg current-prefix-arg) ))) ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 20:07 ` Stefan Monnier @ 2021-02-17 20:20 ` Lars Ingebrigtsen 2021-02-17 22:05 ` Stefan Monnier 2021-02-19 5:41 ` Richard Stallman 1 sibling, 1 reply; 49+ messages in thread From: Lars Ingebrigtsen @ 2021-02-17 20:20 UTC (permalink / raw) To: Stefan Monnier; +Cc: Clemens, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > FWIW, there are other prefix commands than C-u. > There's `C-x RET c`. I just recalled that I added something I called "Symbolic Prefixes" to Gnus in the 90s... It's bound to `M-i' in Gnus buffers, and you can use any char as the prefix. So `M-i r s' will sort in reverse order (in the group buffer). Or something like that. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 20:20 ` Lars Ingebrigtsen @ 2021-02-17 22:05 ` Stefan Monnier 0 siblings, 0 replies; 49+ messages in thread From: Stefan Monnier @ 2021-02-17 22:05 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Clemens, emacs-devel >> FWIW, there are other prefix commands than C-u. >> There's `C-x RET c`. > I just recalled that I added something I called "Symbolic Prefixes" to > Gnus in the 90s... It's bound to `M-i' in Gnus buffers, and you can use > any char as the prefix. So `M-i r s' will sort in reverse order (in the > group buffer). Or something like that. Nice. It'd be great to make it use the `prefix-command-*` thingies so they appear in the echo-keystrokes and can be combined with other prefixes like C-u. Stefan PS: I'm not completely satisfied with those `prefix-command-*` thingies, BTW, so if someone wants to improve them, that'd also be welcome. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 20:07 ` Stefan Monnier 2021-02-17 20:20 ` Lars Ingebrigtsen @ 2021-02-19 5:41 ` Richard Stallman 2021-02-19 14:30 ` Stefan Monnier 1 sibling, 1 reply; 49+ messages in thread From: Richard Stallman @ 2021-02-19 5:41 UTC (permalink / raw) To: Stefan Monnier; +Cc: clemera, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > (defun copy-next-command-output () > "Prefix command to add the output of the next command to the `kill-ring`." It looks useful, but wouldn't copy-previous-command-output be better? With that, you could make the decision after running the other command and seeing its output. -- Dr Richard Stallman Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-19 5:41 ` Richard Stallman @ 2021-02-19 14:30 ` Stefan Monnier 0 siblings, 0 replies; 49+ messages in thread From: Stefan Monnier @ 2021-02-19 14:30 UTC (permalink / raw) To: Richard Stallman; +Cc: clemera, emacs-devel > > (defun copy-next-command-output () > > "Prefix command to add the output of the next command to the `kill-ring`." > > It looks useful, but wouldn't copy-previous-command-output be better? > With that, you could make the decision after running the other command > and seeing its output. Of course, but while it's easy to predict the future, it can be hard to find what happened after the fact ;-) Stefan ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 19:50 A different way to interactively pass options to commands Clemens 2021-02-17 20:07 ` Stefan Monnier @ 2021-02-17 20:09 ` Lars Ingebrigtsen 2021-02-17 20:32 ` Clemens ` (2 more replies) 1 sibling, 3 replies; 49+ messages in thread From: Lars Ingebrigtsen @ 2021-02-17 20:09 UTC (permalink / raw) To: Clemens; +Cc: emacs-devel Clemens <clemera@posteo.net> writes: > Adjusting commands on call is traditionally done via universal prefix > argument. This is mostly nice for numeric repetitions but often it is > also used to change the behavior of a command in other ways and > sometimes even multiple ways depending on the number of times `C-u` is > used. Yes, `C-u' is the only hammer we have here, unfortunately... (And adding commands that are variants of each other.) > The recent discussion around changing `interactive' made me think > about ways to improve that. Magit has shown a real nice UI approach to > pass options with its transient menus. Maybe a simpler but similar > mechanism could be added which could also be configured via > `interactive'. Any opinions on this? What does the Magit UI look like? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 20:09 ` Lars Ingebrigtsen @ 2021-02-17 20:32 ` Clemens 2021-02-17 20:42 ` Lars Ingebrigtsen 2021-02-17 21:48 ` Óscar Fuentes 2021-02-21 10:28 ` Phil Sainty 2 siblings, 1 reply; 49+ messages in thread From: Clemens @ 2021-02-17 20:32 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel > What does the Magit UI look like? Here is an example https://magit.vc/screenshots/popup-diff-arguments.png taken from https://emacsair.me/2017/09/01/magit-walk-through/ Or checkout the beginning of this Video: https://www.youtube.com/watch?v=2-0OwGTt0dI ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 20:32 ` Clemens @ 2021-02-17 20:42 ` Lars Ingebrigtsen 2021-02-17 20:58 ` Clemens 2021-02-17 21:24 ` Clemens 0 siblings, 2 replies; 49+ messages in thread From: Lars Ingebrigtsen @ 2021-02-17 20:42 UTC (permalink / raw) To: Clemens; +Cc: emacs-devel Clemens <clemera@posteo.net> writes: >> What does the Magit UI look like? > > Here is an example > > https://magit.vc/screenshots/popup-diff-arguments.png > > taken from > > https://emacsair.me/2017/09/01/magit-walk-through/ > > Or checkout the beginning of this Video: > > https://www.youtube.com/watch?v=2-0OwGTt0dI Thanks. So it's like a ... mega-popup key menu thing. It does seem quite nice -- it makes command discovery very "in your face": You can't help but know what your options are. But it's a quite radical departure from other commands in Emacs. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 20:42 ` Lars Ingebrigtsen @ 2021-02-17 20:58 ` Clemens 2021-02-17 21:24 ` Clemens 1 sibling, 0 replies; 49+ messages in thread From: Clemens @ 2021-02-17 20:58 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel > Thanks. So it's like a ... mega-popup key menu thing. It does seem > quite nice -- it makes command discovery very "in your face": You can't > help but know what your options are. > > But it's a quite radical departure from other commands in Emacs. You would actively requesting the display with the prefix. Options could also be displayed in the minibuffer but that room is filled up quickly. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 20:42 ` Lars Ingebrigtsen 2021-02-17 20:58 ` Clemens @ 2021-02-17 21:24 ` Clemens 2021-02-17 22:15 ` Stefan Monnier 1 sibling, 1 reply; 49+ messages in thread From: Clemens @ 2021-02-17 21:24 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel > Thanks. So it's like a ... mega-popup key menu thing. It does seem > quite nice -- it makes command discovery very "in your face": You can't > help but know what your options are. > > But it's a quite radical departure from other commands in Emacs. There could also be a delay so if you know the keys you could skip the popup display. But more important to me would be the concept itself: The author of a command can defined keys which adjust the behavior and callers can call these commands with a prefix and than are queried for the option key. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 21:24 ` Clemens @ 2021-02-17 22:15 ` Stefan Monnier 0 siblings, 0 replies; 49+ messages in thread From: Stefan Monnier @ 2021-02-17 22:15 UTC (permalink / raw) To: Clemens; +Cc: Lars Ingebrigtsen, emacs-devel >> Thanks. So it's like a ... mega-popup key menu thing. It does seem >> quite nice -- it makes command discovery very "in your face": You can't >> help but know what your options are. >> But it's a quite radical departure from other commands in Emacs. > > There could also be a delay so if you know the keys you could skip the > popup display. But more important to me would be the concept itself: > The author of a command can defined keys which adjust the behavior and > callers can call these commands with a prefix and than are queried for > the option key. Indeed, these are more like Gnus's `M-i` (as well as a few other such cases, PCL-CVS also had such prefix commands) in that they are somewhat specific to a (set of) commands, whereas the other examples I mentioned tend to be usable with "any" other command (tho they may end up doing nothing in many cases). Stefan ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 20:09 ` Lars Ingebrigtsen 2021-02-17 20:32 ` Clemens @ 2021-02-17 21:48 ` Óscar Fuentes 2021-02-17 22:23 ` Stefan Monnier ` (2 more replies) 2021-02-21 10:28 ` Phil Sainty 2 siblings, 3 replies; 49+ messages in thread From: Óscar Fuentes @ 2021-02-17 21:48 UTC (permalink / raw) To: emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > Clemens <clemera@posteo.net> writes: > >> Adjusting commands on call is traditionally done via universal prefix >> argument. This is mostly nice for numeric repetitions but often it is >> also used to change the behavior of a command in other ways and >> sometimes even multiple ways depending on the number of times `C-u` is >> used. > > Yes, `C-u' is the only hammer we have here, unfortunately... (And > adding commands that are variants of each other.) > >> The recent discussion around changing `interactive' made me think >> about ways to improve that. Magit has shown a real nice UI approach to >> pass options with its transient menus. Maybe a simpler but similar >> mechanism could be added which could also be configured via >> `interactive'. Any opinions on this? > > What does the Magit UI look like? Here is what happens when you invoke the `magit-diff' command: https://magit.vc/screenshots/popup-diff.png BTW, Org has an interface for some commands that looks like Magit's, but in essence has some fundamental differences. When Magit's popup interface was conceived (by yours truly) we were running out of shortcuts: git has too many features and its interface is so barroque, that it was not realistic to provide a command-based interface based on Emacs' command+modifier+prompt interface. Another problem to overcome was ergonomy and discoverability. The later was provided by displaying the available options along with a short description and the former by requiring a minimal and consistent sequence of keypresses. For instance: showing the log of the current repository with default options is `ll' (two els); showing the log of all branches is `la'; showing the log of all branches along with the corresponding patch for each commit is `l-pa', and so on. This works very well at wrapping the complexity of git's UI with another one that is more approachable and agile. So, could Emacs take advantage of something like this? I think so. Think of VC, just to mention a package on the same application area (furthermore, VC has to deal with multiple backends, which makes it potentially more complex than Magit.) Adding a new switch to some VC command is a big deal, from the UI perspective and from the integration with other optiones, and then you end either with a new command or with a new variable, of which existence the user is not aware until he does some investigation. I could implement an analogue, Emacs-oriented Magit popup system, or just borrow the implementation of it that Magit's current maintainer so well polished. IIRC Org considered doing that on the past. The second part is to decide to which part of Emacs to apply it. VC is a good candidate, although a bit too large since the internal code must be adapted to groak the information provided by the popup and that may require too many changes and potential destabilization, as well as being disruptive from the UI point of view. IMAO Emacs presents very good oportunities to improve its usability. The command filtering that we are currently discussing is just a tiny step (and a sizable basis) on that direction that, along with other much larger changes, I envisioned on the past. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 21:48 ` Óscar Fuentes @ 2021-02-17 22:23 ` Stefan Monnier 2021-02-17 22:47 ` Óscar Fuentes 2021-02-17 22:24 ` Lars Ingebrigtsen 2021-02-19 5:42 ` Richard Stallman 2 siblings, 1 reply; 49+ messages in thread From: Stefan Monnier @ 2021-02-17 22:23 UTC (permalink / raw) To: Óscar Fuentes; +Cc: emacs-devel > So, could Emacs take advantage of something like this? I think so. IIUC Magit uses the `transient` package for that functionality, right? I do think it gives a very nice user experience for some things. The most obvious case that comes to my mind is those of major modes that have several of `C-c C-<foo> C-<bar>` bindings (e.g. to insert code templates or other such things) which I never even try to use because I find those key bindings just much too long to remember. So, yes, I do hope that this gets adopted more widely. Stefan ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 22:23 ` Stefan Monnier @ 2021-02-17 22:47 ` Óscar Fuentes 2021-02-17 23:52 ` Clemens 0 siblings, 1 reply; 49+ messages in thread From: Óscar Fuentes @ 2021-02-17 22:47 UTC (permalink / raw) To: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> So, could Emacs take advantage of something like this? I think so. > > IIUC Magit uses the `transient` package for that functionality, right? The popup functionality was segregated to its own package, yes. > I do think it gives a very nice user experience for some things. Yes, for some. For other things it is not the right thing. It shines for configuring actions. If you have one action that works depending on multiple options, this UI is great. But if you have many actions, it is of no use. The later conforms more to Emacs' M-x, menu and shortcut-based UI. > The most obvious case that comes to my mind is those of major modes that > have several of `C-c C-<foo> C-<bar>` bindings (e.g. to insert code > templates or other such things) which I never even try to use because > I find those key bindings just much too long to remember. Org suffers from that kind of key binding proliferation, but IIRC most of them are different actions, although conceptually related (commands that operate on tags, for instance.) For now I solve those cases with M-x, ido and the flx algorithm. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 22:47 ` Óscar Fuentes @ 2021-02-17 23:52 ` Clemens 0 siblings, 0 replies; 49+ messages in thread From: Clemens @ 2021-02-17 23:52 UTC (permalink / raw) To: Óscar Fuentes, emacs-devel > Org suffers from that kind of key binding proliferation, but IIRC most > of them are different actions, although conceptually related (commands > that operate on tags, for instance.) For now I solve those cases with > M-x, ido and the flx algorithm. There is also the nice orderless package: https://github.com/oantolin/orderless It provides a completion-style which is very flexible and also features initialism matching like flx. Internally it uses completion-regexp-list + all-completions so it is very fast. You can even customize individual components by defining dispatchers for example I can append an equal sign to some input ("input=") to match that input literally or for fuzzy matching I use "match~" it is very nice. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 21:48 ` Óscar Fuentes 2021-02-17 22:23 ` Stefan Monnier @ 2021-02-17 22:24 ` Lars Ingebrigtsen 2021-02-17 23:18 ` Óscar Fuentes 2021-02-18 1:16 ` Doug Davis 2021-02-19 5:42 ` Richard Stallman 2 siblings, 2 replies; 49+ messages in thread From: Lars Ingebrigtsen @ 2021-02-17 22:24 UTC (permalink / raw) To: Óscar Fuentes; +Cc: emacs-devel Óscar Fuentes <ofv@wanadoo.es> writes: > For instance: showing the log of the current > repository with default options is `ll' (two els); showing the log of > all branches is `la'; showing the log of all branches along with the > corresponding patch for each commit is `l-pa', and so on. I see; interesting. > So, could Emacs take advantage of something like this? I think so. Yes, it does sound quite attractive. For instance, in Gnus, when responding to a message, there's... I don't know how many commands. Let's see: S F gnus-summary-followup-with-original S L gnus-summary-reply-to-list-with-original S N gnus-summary-followup-to-mail-with-original S R gnus-summary-reply-with-original S V gnus-summary-very-wide-reply-with-original S W gnus-summary-wide-reply-with-original S f gnus-summary-followup S n gnus-summary-followup-to-mail S r gnus-summary-reply S v gnus-summary-very-wide-reply S w gnus-summary-wide-reply S B R gnus-summary-reply-broken-reply-to-with-original S B r gnus-summary-reply-broken-reply-to 13! Geez. Anyway, the interface you describe would fit this use case well, it seems to me: The choices are whether to include the original or not, and what subset of the To/Cc's to include in the set... Currently, users are probably tapping `S C-h' and then learn what the binding is, and then using that. And then forgetting until the next time. A Magit-like popup menu would probably be a much superior interface here, I think? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 22:24 ` Lars Ingebrigtsen @ 2021-02-17 23:18 ` Óscar Fuentes 2021-02-18 10:09 ` Lars Ingebrigtsen 2021-02-18 1:16 ` Doug Davis 1 sibling, 1 reply; 49+ messages in thread From: Óscar Fuentes @ 2021-02-17 23:18 UTC (permalink / raw) To: emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > Yes, it does sound quite attractive. For instance, in Gnus, when > responding to a message, there's... I don't know how many commands. > Let's see: > > S F gnus-summary-followup-with-original > S L gnus-summary-reply-to-list-with-original > S N gnus-summary-followup-to-mail-with-original > S R gnus-summary-reply-with-original > S V gnus-summary-very-wide-reply-with-original > S W gnus-summary-wide-reply-with-original > S f gnus-summary-followup > S n gnus-summary-followup-to-mail > S r gnus-summary-reply > S v gnus-summary-very-wide-reply > S w gnus-summary-wide-reply > S B R gnus-summary-reply-broken-reply-to-with-original > S B r gnus-summary-reply-broken-reply-to > > 13! Geez. I know that pain well enough ;-) > Anyway, the interface you describe would fit this use case > well, it seems to me: The choices are whether to include the original or > not, and what subset of the To/Cc's to include in the set... Currently, > users are probably tapping `S C-h' and then learn what the binding is, > and then using that. And then forgetting until the next time. > > A Magit-like popup menu would probably be a much superior interface > here, I think? That case is a piece of cake for the Magit popup approach, it is almost too simple. What you have there is just the beginnings of a little combinatorial explosion. But then come the long-term advantages: by using the popup approach, if you wish to add a new parameter you don't need to define 13 new commands, you just register the parameter with the popup (along with its corresponding short description) and your UI problem is solved, but much better: you have discoverability, the user is not overwhelmed by a long list of commands (he just combines parameters and then starts actions), you don't have to worry about menus that grow too long, exhausting keys, etc. and the whole process is almost as fast as using the S** shortcuts you have now (one key to start the popup, one key for activating each parameter and one key for launching the action), but with an explicit interface that shows what you are about to do. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 23:18 ` Óscar Fuentes @ 2021-02-18 10:09 ` Lars Ingebrigtsen 0 siblings, 0 replies; 49+ messages in thread From: Lars Ingebrigtsen @ 2021-02-18 10:09 UTC (permalink / raw) To: Óscar Fuentes; +Cc: emacs-devel Óscar Fuentes <ofv@wanadoo.es> writes: > and the whole process is almost as fast as using the S** shortcuts > you have now (one key to start the popup, one key for activating each > parameter and one key for launching the action), but with an explicit > interface that shows what you are about to do. Yes, I'm sold on the concept. :-) I can also imagine using it on the Gnus scoring commands (which implements a system that's not entirely unlike this (sort of, if you squint), but not as user-friendly), and as Stefan M mentioned, skeleton selections could use this, and the `C-x C-m' thing, perhaps. Of course, we can't change the current interfaces, but this would be an additional way to navigate particularly complex (combinatorial-ish) commands. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 22:24 ` Lars Ingebrigtsen 2021-02-17 23:18 ` Óscar Fuentes @ 2021-02-18 1:16 ` Doug Davis 2021-02-18 10:03 ` Lars Ingebrigtsen 1 sibling, 1 reply; 49+ messages in thread From: Doug Davis @ 2021-02-18 1:16 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Óscar Fuentes, emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > Yes, it does sound quite attractive. For instance, in Gnus, when > responding to a message, there's... I don't know how many commands. > Let's see: > > S F gnus-summary-followup-with-original > S L gnus-summary-reply-to-list-with-original > S N gnus-summary-followup-to-mail-with-original > S R gnus-summary-reply-with-original > S V gnus-summary-very-wide-reply-with-original > S W gnus-summary-wide-reply-with-original > S f gnus-summary-followup > S n gnus-summary-followup-to-mail > S r gnus-summary-reply > S v gnus-summary-very-wide-reply > S w gnus-summary-wide-reply > S B R gnus-summary-reply-broken-reply-to-with-original > S B r gnus-summary-reply-broken-reply-to > > 13! Geez. Anyway, the interface you describe would fit this use case > well, it seems to me: The choices are whether to include the original or > not, and what subset of the To/Cc's to include in the set... Currently, > users are probably tapping `S C-h' and then learn what the binding is, > and then using that. And then forgetting until the next time. > > A Magit-like popup menu would probably be a much superior interface > here, I think? I think the menu of gnus-summary response functions can definitely benefit from something like transient. Below is a proof-of-concept I just used to call `gnus-summary-wide-reply-with-original' after binding a new pop-up function to "." followed up by invoking the desired gnus function with "-w", "-o", "r". The total number of keystrokes is a bit more than "S W" but the interface is indeed a welcome addition that would help with discoverability of the (potentially many) actions, as Óscar mentioned, if/when the actions and arguments grow. The flag arguments also make it clear that "-w, --wide" and "-o, --original" are add-ons to the core action. I'm sure there's room for refinement; my transient use has been limited to useless tinkering as a curious magit user, this is honestly the first real use I've gotten out of writing transient-using code myself ;) thanks for sparking the idea #+begin_src emacs-lisp ;; package code: (require 'transient) (require 'gnus-sum) (defun gp--reply-action (&optional args) (interactive (list (transient-args 'gnus-summary-popup))) (let ((-v (member "--very" args)) (-w (member "--wide" args)) (-o (member "--original" args))) (call-interactively (cond ((and -v -w -o) 'gnus-summary-very-wide-reply-with-original) ((and -v -w) 'gnus-summary-very-wide-reply) ((and -w -o) 'gnus-summary-wide-reply-with-original) (-w 'gnus-summary-wide-reply) (-o 'gnus-summary-reply-with-original) (t 'gnus-summary-reply))))) (define-transient-command gnus-summary-popup () "Gnus reply popup" ["Arguments" ("-v" "very" "--very") ("-w" "wide" "--wide") ("-o" "original" "--original")] ["Actions" ("r" "Reply" gp--reply-action)]) (provide 'gnus-popup) ;; user code: (require 'gnus-popup) (define-key gnus-summary-mode-map (kbd ".") 'gnus-summary-popup) #+end_src ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 1:16 ` Doug Davis @ 2021-02-18 10:03 ` Lars Ingebrigtsen 2021-02-18 10:39 ` Kévin Le Gouguec 0 siblings, 1 reply; 49+ messages in thread From: Lars Ingebrigtsen @ 2021-02-18 10:03 UTC (permalink / raw) To: Doug Davis; +Cc: Óscar Fuentes, emacs-devel Doug Davis <ddavis@ddavis.io> writes: > I think the menu of gnus-summary response functions can definitely > benefit from something like transient. Below is a proof-of-concept I > just used to call `gnus-summary-wide-reply-with-original' after binding > a new pop-up function to "." followed up by invoking the desired gnus > function with "-w", "-o", "r". Wow, cool -- that was little code (and quite clear code) to achieve this, so it looks like transient.el is very well designed. So what's the copyright assignment status of transient.el? :-) If we're going to use this throughout Emacs, I guess making it a core package would be the way to go? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 10:03 ` Lars Ingebrigtsen @ 2021-02-18 10:39 ` Kévin Le Gouguec 2021-02-18 10:52 ` Lars Ingebrigtsen 2021-02-18 15:40 ` Stefan Monnier 0 siblings, 2 replies; 49+ messages in thread From: Kévin Le Gouguec @ 2021-02-18 10:39 UTC (permalink / raw) To: Lars Ingebrigtsen Cc: Óscar Fuentes, Jonas Bernoulli, Doug Davis, emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > So what's the copyright assignment status of transient.el? :-) If > we're going to use this throughout Emacs, I guess making it a core > package would be the way to go? Jonas (CC'd) proposed Transient for inclusion to GNU ELPA 10 months ago[1]; afair the thread got derailed because of namespacing issues? [1] <87368npxw4.fsf@bernoul.li> https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg01829.html ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 10:39 ` Kévin Le Gouguec @ 2021-02-18 10:52 ` Lars Ingebrigtsen 2021-02-18 12:13 ` Dmitry Gutov 2021-02-18 16:11 ` Óscar Fuentes 2021-02-18 15:40 ` Stefan Monnier 1 sibling, 2 replies; 49+ messages in thread From: Lars Ingebrigtsen @ 2021-02-18 10:52 UTC (permalink / raw) To: Kévin Le Gouguec Cc: Óscar Fuentes, Jonas Bernoulli, Doug Davis, emacs-devel Kévin Le Gouguec <kevin.legouguec@gmail.com> writes: > Jonas (CC'd) proposed Transient for inclusion to GNU ELPA 10 months > ago[1]; afair the thread got derailed because of namespacing issues? *sigh* This mailing list, man... It's a classic emacs-devel thread with 230 messages, most of them talking about how "assoc" is a bad name for a function that deals with alists or not, all of which is 100% irrelevant for transient.el. Anyway, that's irrelevant. (Oops.) I've downloaded transient.el now, and had a skim-through, and it looks top notch. So I think putting it on ELPA is a no-brainer. But I think it makes sense to make it a core package? (I.e., put it into emacs.git.) Will that be a problem, maintenance wise, for anybody? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 10:52 ` Lars Ingebrigtsen @ 2021-02-18 12:13 ` Dmitry Gutov 2021-02-18 17:45 ` Stefan Kangas 2021-02-18 16:11 ` Óscar Fuentes 1 sibling, 1 reply; 49+ messages in thread From: Dmitry Gutov @ 2021-02-18 12:13 UTC (permalink / raw) To: Lars Ingebrigtsen, Kévin Le Gouguec Cc: Óscar Fuentes, Jonas Bernoulli, Doug Davis, emacs-devel On 18.02.2021 12:52, Lars Ingebrigtsen wrote: > But I think > it makes sense to make it a core package? (I.e., put it into > emacs.git.) Will that be a problem, maintenance wise, for anybody? I hope it's going to be in the core because it's going to be used by some code there (even if just as an optional feature). ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 12:13 ` Dmitry Gutov @ 2021-02-18 17:45 ` Stefan Kangas 2021-02-18 17:55 ` Dmitry Gutov 0 siblings, 1 reply; 49+ messages in thread From: Stefan Kangas @ 2021-02-18 17:45 UTC (permalink / raw) To: Dmitry Gutov, Lars Ingebrigtsen, Kévin Le Gouguec Cc: Óscar Fuentes, Jonas Bernoulli, Doug Davis, emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: > On 18.02.2021 12:52, Lars Ingebrigtsen wrote: >> But I think >> it makes sense to make it a core package? (I.e., put it into >> emacs.git.) Will that be a problem, maintenance wise, for anybody? > > I hope it's going to be in the core because it's going to be used by > some code there (even if just as an optional feature). +1 transient.el can and should be used widely. My vote is strongly for distributing it with Emacs. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 17:45 ` Stefan Kangas @ 2021-02-18 17:55 ` Dmitry Gutov 2021-02-18 18:32 ` Stefan Kangas 0 siblings, 1 reply; 49+ messages in thread From: Dmitry Gutov @ 2021-02-18 17:55 UTC (permalink / raw) To: Stefan Kangas, Lars Ingebrigtsen, Kévin Le Gouguec Cc: Óscar Fuentes, Jonas Bernoulli, Doug Davis, emacs-devel On 18.02.2021 19:45, Stefan Kangas wrote: > Dmitry Gutov<dgutov@yandex.ru> writes: > >> On 18.02.2021 12:52, Lars Ingebrigtsen wrote: >>> But I think >>> it makes sense to make it a core package? (I.e., put it into >>> emacs.git.) Will that be a problem, maintenance wise, for anybody? >> I hope it's going to be in the core because it's going to be used by >> some code there (even if just as an optional feature). > +1 > > transient.el can and should be used widely. My vote is strongly for > distributing it with Emacs. Alternatively, it could stay a "bundled ELPA" package (Stephen L has been working on that feature), with the same effect. That might make maintenance easier for Jonas while 'transient' is still developed externally. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 17:55 ` Dmitry Gutov @ 2021-02-18 18:32 ` Stefan Kangas 2021-02-19 11:59 ` Lars Ingebrigtsen 0 siblings, 1 reply; 49+ messages in thread From: Stefan Kangas @ 2021-02-18 18:32 UTC (permalink / raw) To: Dmitry Gutov, Lars Ingebrigtsen, Kévin Le Gouguec Cc: Óscar Fuentes, Jonas Bernoulli, Doug Davis, emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: >> transient.el can and should be used widely. My vote is strongly for >> distributing it with Emacs. > > Alternatively, it could stay a "bundled ELPA" package (Stephen L has > been working on that feature), with the same effect. > > That might make maintenance easier for Jonas while 'transient' is still > developed externally. Sure, it can wait until we have that support fully worked out. There is no particular rush. The important thing to me is that we should eventually be able to use it in Emacs itself. (Of course, it would be very nice to have it bundled somehow already in Emacs 28.) ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 18:32 ` Stefan Kangas @ 2021-02-19 11:59 ` Lars Ingebrigtsen 0 siblings, 0 replies; 49+ messages in thread From: Lars Ingebrigtsen @ 2021-02-19 11:59 UTC (permalink / raw) To: Stefan Kangas Cc: Óscar Fuentes, Jonas Bernoulli, Dmitry Gutov, Doug Davis, emacs-devel, Kévin Le Gouguec Stefan Kangas <stefankangas@gmail.com> writes: > The important thing to me is that we should eventually be able to use it > in Emacs itself. > > (Of course, it would be very nice to have it bundled somehow already in > Emacs 28.) Yup. But in whatever way is most convenient for Jonas. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 10:52 ` Lars Ingebrigtsen 2021-02-18 12:13 ` Dmitry Gutov @ 2021-02-18 16:11 ` Óscar Fuentes 1 sibling, 0 replies; 49+ messages in thread From: Óscar Fuentes @ 2021-02-18 16:11 UTC (permalink / raw) To: emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > I've downloaded transient.el now, and had a skim-through, and it looks > top notch. So I think putting it on ELPA is a no-brainer. But I think > it makes sense to make it a core package? (I.e., put it into > emacs.git.) Will that be a problem, maintenance wise, for anybody? It is an obvious candidate to be a core package, but I suspect that the maintainer intends to keep growing it externally, so probably it needs to be under a different namespace on core. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 10:39 ` Kévin Le Gouguec 2021-02-18 10:52 ` Lars Ingebrigtsen @ 2021-02-18 15:40 ` Stefan Monnier 2021-02-18 16:28 ` Development snapshots on GNU ELPA (was: A different way to interactively pass options to commands) Kévin Le Gouguec ` (2 more replies) 1 sibling, 3 replies; 49+ messages in thread From: Stefan Monnier @ 2021-02-18 15:40 UTC (permalink / raw) To: Kévin Le Gouguec Cc: Óscar Fuentes, Lars Ingebrigtsen, Jonas Bernoulli, Doug Davis, emacs-devel > Jonas (CC'd) proposed Transient for inclusion to GNU ELPA 10 months > ago[1]; afair the thread got derailed because of namespacing issues? It's in `elpa.git` and you can get a package from it at: http://elpa.gnu.org/devel/transient.html For some reason, Jonas hasn't considered it "ready enough" to make a *release*, yet. Maybe Jonas can remind me/us what are the missing elements. Stefan ^ permalink raw reply [flat|nested] 49+ messages in thread
* Development snapshots on GNU ELPA (was: A different way to interactively pass options to commands) 2021-02-18 15:40 ` Stefan Monnier @ 2021-02-18 16:28 ` Kévin Le Gouguec 2021-02-19 12:01 ` A different way to interactively pass options to commands Lars Ingebrigtsen 2021-02-19 15:44 ` A different way to interactively pass options to commands Jonas Bernoulli 2 siblings, 0 replies; 49+ messages in thread From: Kévin Le Gouguec @ 2021-02-18 16:28 UTC (permalink / raw) To: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > It's in `elpa.git` and you can get a package from it at: > > http://elpa.gnu.org/devel/transient.html Well *huh*. Thanks for (1) correcting me (2) making me realize GNU ELPA has development snapshots now (is it just me, or was this somewhat under-advertised? IIUC this happened during the birth of NonGNU ELPA?) (3) making me realize I owe you for cleaning up my mess in adaptive-wrap all with one link 👏 ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 15:40 ` Stefan Monnier 2021-02-18 16:28 ` Development snapshots on GNU ELPA (was: A different way to interactively pass options to commands) Kévin Le Gouguec @ 2021-02-19 12:01 ` Lars Ingebrigtsen 2021-02-19 14:32 ` Stefan Monnier 2021-02-19 15:44 ` A different way to interactively pass options to commands Jonas Bernoulli 2 siblings, 1 reply; 49+ messages in thread From: Lars Ingebrigtsen @ 2021-02-19 12:01 UTC (permalink / raw) To: Stefan Monnier Cc: Óscar Fuentes, emacs-devel, Jonas Bernoulli, Doug Davis, Kévin Le Gouguec Stefan Monnier <monnier@iro.umontreal.ca> writes: > It's in `elpa.git` and you can get a package from it at: > > http://elpa.gnu.org/devel/transient.html > > For some reason, Jonas hasn't considered it "ready enough" to make > a *release*, yet. Maybe Jonas can remind me/us what are the missing elements. Ah -- I only checked with `M-x list-packages', but it won't show up there until there's a Version header in transient.el (that's bigger than zero), I guess? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-19 12:01 ` A different way to interactively pass options to commands Lars Ingebrigtsen @ 2021-02-19 14:32 ` Stefan Monnier 2021-02-21 14:55 ` GNU-devel and NonGNU-devel (was: A different way to interactively pass options to commands) Basil L. Contovounesios 0 siblings, 1 reply; 49+ messages in thread From: Stefan Monnier @ 2021-02-19 14:32 UTC (permalink / raw) To: Lars Ingebrigtsen Cc: Óscar Fuentes, emacs-devel, Jonas Bernoulli, Doug Davis, Kévin Le Gouguec > Ah -- I only checked with `M-x list-packages', but it won't show up > there until there's a Version header in transient.el (that's bigger than > zero), I guess? Or until you add http://elpa.gnu.org/devel/ to your `package-archives`, yes. Stefan ^ permalink raw reply [flat|nested] 49+ messages in thread
* GNU-devel and NonGNU-devel (was: A different way to interactively pass options to commands) 2021-02-19 14:32 ` Stefan Monnier @ 2021-02-21 14:55 ` Basil L. Contovounesios 2021-02-21 20:25 ` GNU-devel and NonGNU-devel Stefan Monnier 0 siblings, 1 reply; 49+ messages in thread From: Basil L. Contovounesios @ 2021-02-21 14:55 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Ah -- I only checked with `M-x list-packages', but it won't show up >> there until there's a Version header in transient.el (that's bigger than >> zero), I guess? > > Or until you add http://elpa.gnu.org/devel/ to your > `package-archives`, yes. Out of curiosity (apologies if these are already answered somewhere): What are the exact differences in theory and practice between elpa.gnu.org/devel and elpa.gnu.org/packages, and elpa.nongnu.org/nongnu-devel and elpa.nongnu.org/nongnu? Are the devel archives intended as (possibly WIP) counterparts to MELPA? Based on which criteria are new versions of devel packages released, and are they subject to :auto-sync in the same way as non-devel packages? Can the two devel archives be used as drop-in replacements for the default package-archives? What are the pros/cons of doing so from a user's perspective? Thanks, -- Basil ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: GNU-devel and NonGNU-devel 2021-02-21 14:55 ` GNU-devel and NonGNU-devel (was: A different way to interactively pass options to commands) Basil L. Contovounesios @ 2021-02-21 20:25 ` Stefan Monnier 2021-02-25 2:19 ` Basil L. Contovounesios 0 siblings, 1 reply; 49+ messages in thread From: Stefan Monnier @ 2021-02-21 20:25 UTC (permalink / raw) To: Basil L. Contovounesios; +Cc: emacs-devel > What are the exact differences in theory and practice between > elpa.gnu.org/devel and elpa.gnu.org/packages, and > elpa.nongnu.org/nongnu-devel and elpa.nongnu.org/nongnu? The devel archives contain tarballs which reflect the current tip of the Git branch (the one stored in `elpa.git` or `nongnu.git`, not necessarily the same as the one upstream). In contrast the non-devel archives only contain tarballs for those commits where the `Version:` was changed. > Are the devel archives intended as (possibly WIP) counterparts to MELPA? It can be thought of as following the model of the non-stable part of MELPA, but that doesn't make it MELPA to me at all since MELPA is defined rather by the breadth of its coverage. > Based on which criteria are new versions of devel packages released, and > are they subject to :auto-sync in the same way as non-devel packages? Sync'ing the elpa.git/nongnu.git branches with their upstream is somewhat orthogonal to the devel-vs-release archives: the sync'ing is always done between the upstream and the corresponding elpa.git/nongnu.git branch. This sync'ing is done for all package in nongnu.git and only for those tagged with :auto-sync in elpa.git. Once a sync brings changes to a branch, that will always result in a new tarball in the devel archive, but it will only result in a new package in the release archive is the `Version:` changed. > Can the two devel archives be used as drop-in replacements for the > default package-archives? If you're willing to use bleeding edge code, yes. > What are the pros/cons of doing so from a user's perspective? The risk of breakage? Stefan ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: GNU-devel and NonGNU-devel 2021-02-21 20:25 ` GNU-devel and NonGNU-devel Stefan Monnier @ 2021-02-25 2:19 ` Basil L. Contovounesios 0 siblings, 0 replies; 49+ messages in thread From: Basil L. Contovounesios @ 2021-02-25 2:19 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> What are the exact differences in theory and practice between >> elpa.gnu.org/devel and elpa.gnu.org/packages, and >> elpa.nongnu.org/nongnu-devel and elpa.nongnu.org/nongnu? > > The devel archives contain tarballs which reflect the current tip of the > Git branch (the one stored in `elpa.git` or `nongnu.git`, not > necessarily the same as the one upstream). > > In contrast the non-devel archives only contain tarballs for those > commits where the `Version:` was changed. > >> Are the devel archives intended as (possibly WIP) counterparts to MELPA? > > It can be thought of as following the model of the non-stable part of > MELPA, but that doesn't make it MELPA to me at all since MELPA is > defined rather by the breadth of its coverage. Right, I was referring specifically to its default bleeding edge update model. >> Based on which criteria are new versions of devel packages released, and >> are they subject to :auto-sync in the same way as non-devel packages? > > Sync'ing the elpa.git/nongnu.git branches with their upstream is > somewhat orthogonal to the devel-vs-release archives: the sync'ing is > always done between the upstream and the corresponding > elpa.git/nongnu.git branch. This sync'ing is done for all package in > nongnu.git and only for those tagged with :auto-sync in elpa.git. > Once a sync brings changes to a branch, that will always result in a new > tarball in the devel archive, but it will only result in a new package > in the release archive is the `Version:` changed. > >> Can the two devel archives be used as drop-in replacements for the >> default package-archives? > > If you're willing to use bleeding edge code, yes. > >> What are the pros/cons of doing so from a user's perspective? > > The risk of breakage? Makes sense. Thanks for the info and for working on these, -- Basil ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-18 15:40 ` Stefan Monnier 2021-02-18 16:28 ` Development snapshots on GNU ELPA (was: A different way to interactively pass options to commands) Kévin Le Gouguec 2021-02-19 12:01 ` A different way to interactively pass options to commands Lars Ingebrigtsen @ 2021-02-19 15:44 ` Jonas Bernoulli 2021-02-19 18:23 ` Clemens 2 siblings, 1 reply; 49+ messages in thread From: Jonas Bernoulli @ 2021-02-19 15:44 UTC (permalink / raw) To: Stefan Monnier, Kévin Le Gouguec Cc: Óscar Fuentes, Lars Ingebrigtsen, Doug Davis, emacs-devel >> Jonas (CC'd) proposed Transient for inclusion to GNU ELPA 10 months >> ago[1]; afair the thread got derailed because of namespacing issues? This time around the timing is very good. This week I have been working on getting Transient ready for another release and was already planning to publish that to GNU Elpa today. And then I saw this thread, while drinking my morning tea. :D > For some reason, Jonas hasn't considered it "ready enough" to make a > *release*, yet. Maybe Jonas can remind me/us what are the missing > elements. I probably was worried about the heisenbug, that I have not been able to track down until earlier this week. Also I didn't want to publish until I was able to building the package locally before publishing it on GNU Elpa. Now that you have rewritten the GNU Elpa tooling that works well (thanks again), so that no longer is a blocker. (We still have to look into making org-contrib and my ox-texinfo+ available while building packages, but that can wait.) So if everything goes according to plan, I will release later today, or maybe on the weekend. Jonas ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-19 15:44 ` A different way to interactively pass options to commands Jonas Bernoulli @ 2021-02-19 18:23 ` Clemens 2021-02-22 0:18 ` Jonas Bernoulli 0 siblings, 1 reply; 49+ messages in thread From: Clemens @ 2021-02-19 18:23 UTC (permalink / raw) To: Jonas Bernoulli Cc: Óscar Fuentes, Doug Davis, emacs-devel, Stefan Monnier, Kévin Le Gouguec, Lars Ingebrigtsen > So if everything goes according to plan, I will release later today, > or maybe on the weekend. What are your thoughts about the discussion of including it in Emacs? I think having it built-in would be a huge benefit. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-19 18:23 ` Clemens @ 2021-02-22 0:18 ` Jonas Bernoulli 2021-02-22 2:39 ` T.V Raman ` (2 more replies) 0 siblings, 3 replies; 49+ messages in thread From: Jonas Bernoulli @ 2021-02-22 0:18 UTC (permalink / raw) To: Clemens Cc: Óscar Fuentes, Doug Davis, emacs-devel, Stefan Monnier, Kévin Le Gouguec, Lars Ingebrigtsen >> So if everything goes according to plan, I will release later today, >> or maybe on the weekend. I made it, but just barely: https://emacsair.me/2021/02/21/transient-0.3/. > What are your thoughts about the discussion of including it in Emacs? > I think having it built-in would be a huge benefit. I am excited at the prospect of having some core packages use Transient. But also a bit scared. In the short run we should keep it in elpa.git. Some bad interaction with the minibuffer have to be fixed (currently they are just disallowed, to prevent disaster) before adding to Emacs. I would prefer the "bundled elpa package" approach over adding the package to emacs.git itself, but don't know if that feature is already usable. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-22 0:18 ` Jonas Bernoulli @ 2021-02-22 2:39 ` T.V Raman 2021-02-22 9:17 ` Questions about transient (was: Re: A different way to interactively pass options to commands) Joost Kremers 2021-02-23 12:15 ` A different way to interactively pass options to commands Stephen Leake 2 siblings, 0 replies; 49+ messages in thread From: T.V Raman @ 2021-02-22 2:39 UTC (permalink / raw) To: Jonas Bernoulli Cc: Clemens, Óscar Fuentes, Doug Davis, emacs-devel, Stefan Monnier, Kévin Le Gouguec, Lars Ingebrigtsen [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=gb18030, Size: 359 bytes --] 1+. The other slight concern I have re transient being in core Emacs is that if the one outside the core moves faster, then as a user of Magit I'd have to have both versions around --- That said, I think transient would be wonderful to have a part of emacs so more packages can use it -- Thanks, --Raman 7©4 Id: kg:/m/0285kf1 0Ü8 ^ permalink raw reply [flat|nested] 49+ messages in thread
* Questions about transient (was: Re: A different way to interactively pass options to commands) 2021-02-22 0:18 ` Jonas Bernoulli 2021-02-22 2:39 ` T.V Raman @ 2021-02-22 9:17 ` Joost Kremers 2021-02-22 15:08 ` Jonas Bernoulli 2021-02-22 16:25 ` [External] : " Drew Adams 2021-02-23 12:15 ` A different way to interactively pass options to commands Stephen Leake 2 siblings, 2 replies; 49+ messages in thread From: Joost Kremers @ 2021-02-22 9:17 UTC (permalink / raw) To: Jonas Bernoulli; +Cc: emacs-devel On Mon, Feb 22 2021, Jonas Bernoulli wrote: > I am excited at the prospect of having some core packages use Transient. If transient is included in Emacs core, that would be a good reason for me to consider moving one of my packages, for which I'm currently using hydras, over to it. But I have a few questions about transient, that don't seem to be covered by the manual. What would be the best place to ask them? This list? The Discussion page on Github? (They're not really suitable for Github issues.) TIA -- Joost Kremers Life has its moments ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Questions about transient (was: Re: A different way to interactively pass options to commands) 2021-02-22 9:17 ` Questions about transient (was: Re: A different way to interactively pass options to commands) Joost Kremers @ 2021-02-22 15:08 ` Jonas Bernoulli 2021-02-22 21:06 ` Joost Kremers 2021-02-22 16:25 ` [External] : " Drew Adams 1 sibling, 1 reply; 49+ messages in thread From: Jonas Bernoulli @ 2021-02-22 15:08 UTC (permalink / raw) To: Joost Kremers; +Cc: emacs-devel Joost Kremers <joostkremers@fastmail.fm> writes: > But I have a few questions about transient, that don't seem to be covered by the > manual. What would be the best place to ask them? This list? The Discussion page > on Github? (They're not really suitable for Github issues.) Well if they are of interest to other people here then... here probably. ;-) (But search the issue tracker first; other might have had the same questions before.) ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Questions about transient (was: Re: A different way to interactively pass options to commands) 2021-02-22 15:08 ` Jonas Bernoulli @ 2021-02-22 21:06 ` Joost Kremers 0 siblings, 0 replies; 49+ messages in thread From: Joost Kremers @ 2021-02-22 21:06 UTC (permalink / raw) To: Jonas Bernoulli; +Cc: emacs-devel On Mon, Feb 22 2021, Jonas Bernoulli wrote: > Joost Kremers <joostkremers@fastmail.fm> writes: > >> But I have a few questions about transient, that don't seem to be covered by the >> manual. What would be the best place to ask them? This list? The Discussion page >> on Github? (They're not really suitable for Github issues.) > > Well if they are of interest to other people here then... > here probably. ;-) I'm not sure they would be of interest to others here, so it might be better to take them to Github. Anyway, I'll need to find some time, so expect them some time this week but not today. :-) -- Joost Kremers Life has its moments ^ permalink raw reply [flat|nested] 49+ messages in thread
* RE: [External] : Questions about transient (was: Re: A different way to interactively pass options to commands) 2021-02-22 9:17 ` Questions about transient (was: Re: A different way to interactively pass options to commands) Joost Kremers 2021-02-22 15:08 ` Jonas Bernoulli @ 2021-02-22 16:25 ` Drew Adams 1 sibling, 0 replies; 49+ messages in thread From: Drew Adams @ 2021-02-22 16:25 UTC (permalink / raw) To: Joost Kremers, Jonas Bernoulli; +Cc: emacs-devel@gnu.org > If transient is included in Emacs core, that would be a good reason for > me to consider moving one of my packages This. A 3rd-party library is (much) more likely to make use of something that's part of Emacs than it is to provide code that hard-code depends on an external library. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-22 0:18 ` Jonas Bernoulli 2021-02-22 2:39 ` T.V Raman 2021-02-22 9:17 ` Questions about transient (was: Re: A different way to interactively pass options to commands) Joost Kremers @ 2021-02-23 12:15 ` Stephen Leake 2021-02-23 19:06 ` Jonas Bernoulli 2 siblings, 1 reply; 49+ messages in thread From: Stephen Leake @ 2021-02-23 12:15 UTC (permalink / raw) To: Jonas Bernoulli Cc: Óscar Fuentes, Doug Davis, emacs-devel, Clemens, Kévin Le Gouguec, Lars Ingebrigtsen, Stefan Monnier Jonas Bernoulli <jonas@bernoul.li> writes: >> What are your thoughts about the discussion of including it in Emacs? >> I think having it built-in would be a huge benefit. > > I would prefer the "bundled elpa package" approach over adding the > package to emacs.git itself, but don't know if that feature is already > usable. Since transient is a single elisp file, the simplest approach is to put it in emacs.git under lisp, and enter it in elpa as a :core package. Then emacs.git is the upstream development repo. The proposed policy for bundled elpa packages is that core emacs code may not depend on them; on the other hand, core emacs code may depend on :core elpa packages. -- -- Stephe ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-23 12:15 ` A different way to interactively pass options to commands Stephen Leake @ 2021-02-23 19:06 ` Jonas Bernoulli 0 siblings, 0 replies; 49+ messages in thread From: Jonas Bernoulli @ 2021-02-23 19:06 UTC (permalink / raw) To: Stephen Leake Cc: Óscar Fuentes, Doug Davis, emacs-devel, Clemens, Kévin Le Gouguec, Lars Ingebrigtsen, Stefan Monnier Stephen Leake <stephen_leake@stephe-leake.org> writes: > Jonas Bernoulli <jonas@bernoul.li> writes: > >>> What are your thoughts about the discussion of including it in Emacs? >>> I think having it built-in would be a huge benefit. >> >> I would prefer the "bundled elpa package" approach over adding the >> package to emacs.git itself, but don't know if that feature is already >> usable. > > Since transient is a single elisp file, the simplest approach is to put > it in emacs.git under lisp, and enter it in elpa as a :core package. > Then emacs.git is the upstream development repo. Plus transient.texi. Does that change anything? > The proposed policy for bundled elpa packages is that core emacs code > may not depend on them; on the other hand, core emacs code may depend on > :core elpa packages. Well that decides it then; core it is. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 21:48 ` Óscar Fuentes 2021-02-17 22:23 ` Stefan Monnier 2021-02-17 22:24 ` Lars Ingebrigtsen @ 2021-02-19 5:42 ` Richard Stallman 2021-02-19 6:32 ` Stefan Kangas 2 siblings, 1 reply; 49+ messages in thread From: Richard Stallman @ 2021-02-19 5:42 UTC (permalink / raw) To: Ãscar Fuentes; +Cc: emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] The intro to Magit, which I watched via invidious rather than by accessing youtube itself, displays text so small I have trouble reading it. I can't see what the options say. But I think I understand the general scheme that is in use. I see how it makes sense for a special mode, for a buffer in which letters can be used as commands. But how can this be applied to an ordinary buffer in which letters self-insert? -- Dr Richard Stallman Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-19 5:42 ` Richard Stallman @ 2021-02-19 6:32 ` Stefan Kangas 0 siblings, 0 replies; 49+ messages in thread From: Stefan Kangas @ 2021-02-19 6:32 UTC (permalink / raw) To: rms, Óscar Fuentes; +Cc: emacs-devel Richard Stallman <rms@gnu.org> writes: > I see how it makes sense for a special mode, for a buffer in which > letters can be used as commands. But how can this be applied > to an ordinary buffer in which letters self-insert? The transient UI is only displayed when running a command. For example, I would press `c' in magit to show the popup for the commit action. In some text mode with self-inserting letters, you would run a command with a modifier instead, like you would any command. To hide the popup, you would need to press `C-g' to hide the popup. That would stop letters from being interpreted as commands (i.e. make them self-insert again). ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: A different way to interactively pass options to commands 2021-02-17 20:09 ` Lars Ingebrigtsen 2021-02-17 20:32 ` Clemens 2021-02-17 21:48 ` Óscar Fuentes @ 2021-02-21 10:28 ` Phil Sainty 2 siblings, 0 replies; 49+ messages in thread From: Phil Sainty @ 2021-02-21 10:28 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Clemens, emacs-devel On 18/02/21 9:09 am, Lars Ingebrigtsen wrote: > Yes, `C-u' is the only hammer we have here, unfortunately... > (And adding commands that are variants of each other.) > [...] > What does the Magit UI look like? If it helps, this pair of messages provides another description: * https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg02036.html * https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00000.html The second message is more descriptive, but the first one contains the link for the referenced video. ^ permalink raw reply [flat|nested] 49+ messages in thread
end of thread, other threads:[~2021-02-25 2:19 UTC | newest] Thread overview: 49+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-02-17 19:50 A different way to interactively pass options to commands Clemens 2021-02-17 20:07 ` Stefan Monnier 2021-02-17 20:20 ` Lars Ingebrigtsen 2021-02-17 22:05 ` Stefan Monnier 2021-02-19 5:41 ` Richard Stallman 2021-02-19 14:30 ` Stefan Monnier 2021-02-17 20:09 ` Lars Ingebrigtsen 2021-02-17 20:32 ` Clemens 2021-02-17 20:42 ` Lars Ingebrigtsen 2021-02-17 20:58 ` Clemens 2021-02-17 21:24 ` Clemens 2021-02-17 22:15 ` Stefan Monnier 2021-02-17 21:48 ` Óscar Fuentes 2021-02-17 22:23 ` Stefan Monnier 2021-02-17 22:47 ` Óscar Fuentes 2021-02-17 23:52 ` Clemens 2021-02-17 22:24 ` Lars Ingebrigtsen 2021-02-17 23:18 ` Óscar Fuentes 2021-02-18 10:09 ` Lars Ingebrigtsen 2021-02-18 1:16 ` Doug Davis 2021-02-18 10:03 ` Lars Ingebrigtsen 2021-02-18 10:39 ` Kévin Le Gouguec 2021-02-18 10:52 ` Lars Ingebrigtsen 2021-02-18 12:13 ` Dmitry Gutov 2021-02-18 17:45 ` Stefan Kangas 2021-02-18 17:55 ` Dmitry Gutov 2021-02-18 18:32 ` Stefan Kangas 2021-02-19 11:59 ` Lars Ingebrigtsen 2021-02-18 16:11 ` Óscar Fuentes 2021-02-18 15:40 ` Stefan Monnier 2021-02-18 16:28 ` Development snapshots on GNU ELPA (was: A different way to interactively pass options to commands) Kévin Le Gouguec 2021-02-19 12:01 ` A different way to interactively pass options to commands Lars Ingebrigtsen 2021-02-19 14:32 ` Stefan Monnier 2021-02-21 14:55 ` GNU-devel and NonGNU-devel (was: A different way to interactively pass options to commands) Basil L. Contovounesios 2021-02-21 20:25 ` GNU-devel and NonGNU-devel Stefan Monnier 2021-02-25 2:19 ` Basil L. Contovounesios 2021-02-19 15:44 ` A different way to interactively pass options to commands Jonas Bernoulli 2021-02-19 18:23 ` Clemens 2021-02-22 0:18 ` Jonas Bernoulli 2021-02-22 2:39 ` T.V Raman 2021-02-22 9:17 ` Questions about transient (was: Re: A different way to interactively pass options to commands) Joost Kremers 2021-02-22 15:08 ` Jonas Bernoulli 2021-02-22 21:06 ` Joost Kremers 2021-02-22 16:25 ` [External] : " Drew Adams 2021-02-23 12:15 ` A different way to interactively pass options to commands Stephen Leake 2021-02-23 19:06 ` Jonas Bernoulli 2021-02-19 5:42 ` Richard Stallman 2021-02-19 6:32 ` Stefan Kangas 2021-02-21 10:28 ` Phil Sainty
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).