* bug#45333: complex command history should not save optional nil parameters @ 2020-12-20 9:01 novim via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-06-07 11:57 ` Lars Ingebrigtsen 0 siblings, 1 reply; 36+ messages in thread From: novim via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2020-12-20 9:01 UTC (permalink / raw) To: 45333 [-- Attachment #1: Type: text/plain, Size: 838 bytes --] I often use complex command history and I often copy commands from it to my notes. For some commands the expression saved in this history is more complex than necessary. Here's an example with a simple command: I do a query replace then go to complex command history which shows: (query-replace-regexp "a" "b" nil nil nil nil nil) If I save this command then I delete the nils, because they are unnecessary there and make the expression noisy in my notes, so I delete them manually: (query-replace-regexp "a" "b") This is the same command, since the rest of the params are optional: (query-replace FROM-STRING TO-STRING &optional DELIMITED START END BACKWARD REGION-NONCONTIGUOUS-P) When commands are saved in the complex history they should be saved in a format which skips the rest of the arguments if they are optional and nil. [-- Attachment #2: Type: text/html, Size: 1135 bytes --] ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2020-12-20 9:01 bug#45333: complex command history should not save optional nil parameters novim via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-06-07 11:57 ` Lars Ingebrigtsen 2022-06-07 13:15 ` Eli Zaretskii 0 siblings, 1 reply; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-06-07 11:57 UTC (permalink / raw) To: novim; +Cc: 45333 novim <laszlomail@protonmail.com> writes: > I often use complex command history and I often copy commands from it to my > notes. For some commands the expression saved in this history is more complex than > necessary. > > Here's an example with a simple command: > > I do a query replace then go to complex command history which shows: (I'm going through old bug reports that unfortunately weren't resolved at the time.) I'm unfamiliar with the term "complex command history" -- how do you see this history? (`M-x apropos RET complex.*command RET' didn't tell me anything more.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-06-07 11:57 ` Lars Ingebrigtsen @ 2022-06-07 13:15 ` Eli Zaretskii 2022-06-07 13:20 ` Eli Zaretskii 2022-06-08 11:43 ` Lars Ingebrigtsen 0 siblings, 2 replies; 36+ messages in thread From: Eli Zaretskii @ 2022-06-07 13:15 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: laszlomail, 45333 > Cc: 45333@debbugs.gnu.org > From: Lars Ingebrigtsen <larsi@gnus.org> > Date: Tue, 07 Jun 2022 13:57:36 +0200 > > novim <laszlomail@protonmail.com> writes: > > > I often use complex command history and I often copy commands from it to my > > notes. For some commands the expression saved in this history is more complex than > > necessary. > > > > Here's an example with a simple command: > > > > I do a query replace then go to complex command history which shows: > > (I'm going through old bug reports that unfortunately weren't resolved > at the time.) > > I'm unfamiliar with the term "complex command history" -- how do you see > this history? I think like this: M-x repeat-complex-command RET M-n M-n ... ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-06-07 13:15 ` Eli Zaretskii @ 2022-06-07 13:20 ` Eli Zaretskii 2022-06-08 11:43 ` Lars Ingebrigtsen 1 sibling, 0 replies; 36+ messages in thread From: Eli Zaretskii @ 2022-06-07 13:20 UTC (permalink / raw) To: larsi, laszlomail; +Cc: 45333 > Cc: laszlomail@protonmail.com, 45333@debbugs.gnu.org > Date: Tue, 07 Jun 2022 16:15:47 +0300 > From: Eli Zaretskii <eliz@gnu.org> > > M-x repeat-complex-command RET > M-n > M-n > ... Sorry, I meant M-p, of course... ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-06-07 13:15 ` Eli Zaretskii 2022-06-07 13:20 ` Eli Zaretskii @ 2022-06-08 11:43 ` Lars Ingebrigtsen 2022-06-08 13:57 ` Eli Zaretskii 2022-07-05 14:16 ` Michael Heerdegen 1 sibling, 2 replies; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-06-08 11:43 UTC (permalink / raw) To: Eli Zaretskii; +Cc: laszlomail, 45333 Eli Zaretskii <eliz@gnu.org> writes: >> > I often use complex command history and I often copy commands from it to my >> > notes. For some commands the expression saved in this history is >> > more complex than >> > necessary. >> > >> > Here's an example with a simple command: >> > >> > I do a query replace then go to complex command history which shows: [...] >> I'm unfamiliar with the term "complex command history" -- how do you see >> this history? > > I think like this: > > M-x repeat-complex-command RET > M-n > M-n > ... Ah; thanks. Yes, we land things like (replace-string "foo" "bar" nil nil nil nil nil) in `command-history' -- where all those nils are optional. We could pretty easily filter those out by looking at the signature of the function and peeling off trailing nils, I think? Would there be any disadvantages to doing so? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-06-08 11:43 ` Lars Ingebrigtsen @ 2022-06-08 13:57 ` Eli Zaretskii 2022-06-09 10:22 ` Lars Ingebrigtsen 2022-07-05 14:16 ` Michael Heerdegen 1 sibling, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2022-06-08 13:57 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: laszlomail, 45333 > From: Lars Ingebrigtsen <larsi@gnus.org> > Cc: laszlomail@protonmail.com, 45333@debbugs.gnu.org > Date: Wed, 08 Jun 2022 13:43:50 +0200 > > > M-x repeat-complex-command RET > > M-n > > M-n > > ... > > Ah; thanks. Yes, we land things like > > (replace-string "foo" "bar" nil nil nil nil nil) > > in `command-history' -- where all those nils are optional. We could > pretty easily filter those out by looking at the signature of the > function and peeling off trailing nils, I think? Would there be any > disadvantages to doing so? I don't see any advantages, FWIW. ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-06-08 13:57 ` Eli Zaretskii @ 2022-06-09 10:22 ` Lars Ingebrigtsen 2022-06-09 10:33 ` Eli Zaretskii 0 siblings, 1 reply; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-06-09 10:22 UTC (permalink / raw) To: Eli Zaretskii; +Cc: laszlomail, 45333 Eli Zaretskii <eliz@gnu.org> writes: >> (replace-string "foo" "bar" nil nil nil nil nil) >> >> in `command-history' -- where all those nils are optional. We could >> pretty easily filter those out by looking at the signature of the >> function and peeling off trailing nils, I think? Would there be any >> disadvantages to doing so? > > I don't see any advantages, FWIW. The advantage would be that the history is easier to navigate, because you don't have to stare at all those nils when going through the list looking for the command to execute. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-06-09 10:22 ` Lars Ingebrigtsen @ 2022-06-09 10:33 ` Eli Zaretskii 2022-06-10 8:52 ` Lars Ingebrigtsen 0 siblings, 1 reply; 36+ messages in thread From: Eli Zaretskii @ 2022-06-09 10:33 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: laszlomail, 45333 > From: Lars Ingebrigtsen <larsi@gnus.org> > Cc: laszlomail@protonmail.com, 45333@debbugs.gnu.org > Date: Thu, 09 Jun 2022 12:22:52 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > >> (replace-string "foo" "bar" nil nil nil nil nil) > >> > >> in `command-history' -- where all those nils are optional. We could > >> pretty easily filter those out by looking at the signature of the > >> function and peeling off trailing nils, I think? Would there be any > >> disadvantages to doing so? > > > > I don't see any advantages, FWIW. > > The advantage would be that the history is easier to navigate, because > you don't have to stare at all those nils when going through the list > looking for the command to execute. OTOH, you get to see all the optional arguments, which is also useful. It's a minor issue, to be sure. ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-06-09 10:33 ` Eli Zaretskii @ 2022-06-10 8:52 ` Lars Ingebrigtsen 0 siblings, 0 replies; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-06-10 8:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: laszlomail, 45333 Eli Zaretskii <eliz@gnu.org> writes: >> The advantage would be that the history is easier to navigate, because >> you don't have to stare at all those nils when going through the list >> looking for the command to execute. > > OTOH, you get to see all the optional arguments, which is also useful. > > It's a minor issue, to be sure. Very minor, but on the whole, I think it makes for a slightly better `command-history', so I've now pushed this to Emacs 29. We'll see whether there's any problems in this area... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-06-08 11:43 ` Lars Ingebrigtsen 2022-06-08 13:57 ` Eli Zaretskii @ 2022-07-05 14:16 ` Michael Heerdegen 2022-07-05 14:53 ` Drew Adams 2022-07-05 16:41 ` Lars Ingebrigtsen 1 sibling, 2 replies; 36+ messages in thread From: Michael Heerdegen @ 2022-07-05 14:16 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: laszlomail, Eli Zaretskii, 45333 Lars Ingebrigtsen <larsi@gnus.org> writes: > Ah; thanks. Yes, we land things like > > (replace-string "foo" "bar" nil nil nil nil nil) > > in `command-history' -- where all those nils are optional. We could > pretty easily filter those out by looking at the signature of the > function and peeling off trailing nils, I think? Would there be any > disadvantages to doing so? Note that there are only such `nil`s when the evaluation of the interactive spec returned them. It's somewhat consistent if the command history includes the argument list exactly as returned by `interactive'. The more general problem is to provide interactive forms that work nicely with `repeat-complex-command' - something programmers are often not aware of when writing commands. Anyway, trying of prettify away those `nil`s seems like overkill to me. In theory even an optional `nil' can be significant. Michael. ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 14:16 ` Michael Heerdegen @ 2022-07-05 14:53 ` Drew Adams 2022-07-05 16:41 ` Lars Ingebrigtsen 1 sibling, 0 replies; 36+ messages in thread From: Drew Adams @ 2022-07-05 14:53 UTC (permalink / raw) To: Michael Heerdegen, Lars Ingebrigtsen Cc: laszlomail@protonmail.com, Eli Zaretskii, 45333@debbugs.gnu.org > > (replace-string "foo" "bar" nil nil nil nil nil) > > > > in `command-history' -- where all those nils are optional. We could > > pretty easily filter those out by looking at the signature of the > > function and peeling off trailing nils, I think? Would there be any > > disadvantages to doing so? > > Note that there are only such `nil`s when the evaluation of the > interactive spec returned them. It's somewhat consistent if the > command history includes the argument list exactly as returned by > `interactive'... > > Anyway, trying of prettify away those `nil`s seems like overkill to me. > In theory even an optional `nil' can be significant. +1. Among other uses, `repeat-complex-command' shows a user just what args were passed to the function. ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 14:16 ` Michael Heerdegen 2022-07-05 14:53 ` Drew Adams @ 2022-07-05 16:41 ` Lars Ingebrigtsen 2022-07-05 18:45 ` Michael Heerdegen 1 sibling, 1 reply; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-05 16:41 UTC (permalink / raw) To: Michael Heerdegen; +Cc: laszlomail, Eli Zaretskii, 45333 Michael Heerdegen <michael_heerdegen@web.de> writes: > Anyway, trying of prettify away those `nil`s seems like overkill to me. > In theory even an optional `nil' can be significant. They can be if the signature is a &rest that parses the parameters by hand, but are there other cases where a nil optional argument is significant? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 16:41 ` Lars Ingebrigtsen @ 2022-07-05 18:45 ` Michael Heerdegen 2022-07-05 18:48 ` Lars Ingebrigtsen 0 siblings, 1 reply; 36+ messages in thread From: Michael Heerdegen @ 2022-07-05 18:45 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: laszlomail, Eli Zaretskii, 45333 Lars Ingebrigtsen <larsi@gnus.org> writes: > Michael Heerdegen <michael_heerdegen@web.de> writes: > > > Anyway, trying of prettify away those `nil`s seems like overkill to me. > > In theory even an optional `nil' can be significant. > > They can be if the signature is a &rest that parses the parameters by > hand, but are there other cases where a nil optional argument is > significant? `cl-defun's? Also advises have access to the actually passed parameter list. Dunno if there are other cases. Michael. ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 18:45 ` Michael Heerdegen @ 2022-07-05 18:48 ` Lars Ingebrigtsen 2022-07-05 19:06 ` Michael Heerdegen 2022-07-05 20:15 ` Drew Adams 0 siblings, 2 replies; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-05 18:48 UTC (permalink / raw) To: Michael Heerdegen; +Cc: laszlomail, Eli Zaretskii, 45333 Michael Heerdegen <michael_heerdegen@web.de> writes: > `cl-defun's? I've always assumed that those were really &rest, but I haven't actually checked. > Also advises have access to the actually passed parameter > list. Dunno if there are other cases. Those are also detectable (and are probably &rest under the hood, I guess?). The proposal is to only peel the nils of the end if they are indeed &optional. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 18:48 ` Lars Ingebrigtsen @ 2022-07-05 19:06 ` Michael Heerdegen 2022-07-05 19:09 ` Lars Ingebrigtsen 2022-07-05 20:15 ` Drew Adams 1 sibling, 1 reply; 36+ messages in thread From: Michael Heerdegen @ 2022-07-05 19:06 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: laszlomail, Eli Zaretskii, 45333 Lars, everything depends on how you define "signature" and where get it from. Does adding an :around advice change the signature of a command? Michael. ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 19:06 ` Michael Heerdegen @ 2022-07-05 19:09 ` Lars Ingebrigtsen 2022-07-05 19:43 ` Michael Heerdegen 0 siblings, 1 reply; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-05 19:09 UTC (permalink / raw) To: Michael Heerdegen; +Cc: laszlomail, Eli Zaretskii, 45333 Michael Heerdegen <michael_heerdegen@web.de> writes: > Lars, > > everything depends on how you define "signature" and where get it from. > Does adding an :around advice change the signature of a command? This isn't a language design issue. We're talking about making the history prettier where it's 100% safe to do so, and nothing more than that. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 19:09 ` Lars Ingebrigtsen @ 2022-07-05 19:43 ` Michael Heerdegen 2022-07-05 19:50 ` Lars Ingebrigtsen 0 siblings, 1 reply; 36+ messages in thread From: Michael Heerdegen @ 2022-07-05 19:43 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: laszlomail, Eli Zaretskii, 45333 Lars Ingebrigtsen <larsi@gnus.org> writes: > > everything depends on how you define "signature" and where get it from. > > Does adding an :around advice change the signature of a command? > > This isn't a language design issue. We're talking about making the > history prettier where it's 100% safe to do so, and nothing more than > that. My question is if 100% safe cases exist? For example: #+begin_src emacs-lisp (defun test (&optional x) (interactive) x) (advice-add 'test :around (defun test-ad (f &rest args) args)) #+end_src the signature of `test' is still `(test &optional X)` as reported by C-h f although the function is able to distinguish a specified nil from a not specified optional argument. What you suggest might still be doable by obtaining the effective signature differently... but I still don't like the idea. Michael. ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 19:43 ` Michael Heerdegen @ 2022-07-05 19:50 ` Lars Ingebrigtsen 2022-07-05 20:00 ` Drew Adams 2022-07-05 20:49 ` Lars Ingebrigtsen 0 siblings, 2 replies; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-05 19:50 UTC (permalink / raw) To: Michael Heerdegen; +Cc: laszlomail, Eli Zaretskii, 45333 Michael Heerdegen <michael_heerdegen@web.de> writes: > (advice-add 'test :around (defun test-ad (f &rest args) args)) > #+end_src > > the signature of `test' is still `(test &optional X)` as reported by C-h > f although the function is able to distinguish a specified nil from a > not specified optional argument. `C-h f' lies, of course. :-) That is, `help-function-arglist'. (Which reminds me -- I've always found it odd that that function lives in help.el, and is in Emacs Lisp instead of C. It is, after all, used by eldoc etc, and it'd probably be nice if it were more efficient.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 19:50 ` Lars Ingebrigtsen @ 2022-07-05 20:00 ` Drew Adams 2022-07-05 20:49 ` Lars Ingebrigtsen 1 sibling, 0 replies; 36+ messages in thread From: Drew Adams @ 2022-07-05 20:00 UTC (permalink / raw) To: Lars Ingebrigtsen, Michael Heerdegen Cc: laszlomail@protonmail.com, Eli Zaretskii, 45333@debbugs.gnu.org > > (advice-add 'test :around (defun test-ad (f &rest args) args)) > > #+end_src > > > > the signature of `test' is still `(test &optional X)` as reported by > C-h > > f although the function is able to distinguish a specified nil from a > > not specified optional argument. > > `C-h f' lies, of course. :-) That is, `help-function-arglist'. > (Which reminds me -- I've always found it odd that that function lives in > help.el, and is in Emacs Lisp instead of C. It is, after all, used by > eldoc etc, and it'd probably be nice if it were more efficient.) Please don't move it to C. ___ Advice isn't supported very well by Help (or vice versa). (Perhaps "integrated with" instead of "supported by".) The old advice system used to let you add to or replace the doc-string text directly, so you saw it directly in `*Help*'. The new advice system tells you the function is advised and gives you a link to the doc provided by the advice. ___ And yeah, the Lisp calling sequence / signature is also not supported/integrated. ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 19:50 ` Lars Ingebrigtsen 2022-07-05 20:00 ` Drew Adams @ 2022-07-05 20:49 ` Lars Ingebrigtsen 2022-07-05 22:37 ` Drew Adams 2022-07-06 18:41 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 2 replies; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-05 20:49 UTC (permalink / raw) To: Michael Heerdegen; +Cc: laszlomail, Eli Zaretskii, 45333, Stefan Monnier Lars Ingebrigtsen <larsi@gnus.org> writes: > (Which reminds me -- I've always found it odd that that function lives > in help.el, and is in Emacs Lisp instead of C. It is, after all, used > by eldoc etc, and it'd probably be nice if it were more efficient.) So I started taking a stab at this to see whether there's any gains to be had, and I've now basically rewritten it in C. And, yes, I think it makes sense, because we can avoid at least some garbage generating functions without contorting ourselves too much. One thing, though -- I'm not sure how to do the oclosure stuff from C, so I've added Stefan to the CCs. It's this bit: ;; Advice wrappers have "catch all" args, so fetch the actual underlying ;; function to find the real arguments. (setq def (advice--cd*r def)) This is an oclosure these days. (While poking at this, if we want to do the proposed history shortening, we don't need to look at the arglist at all -- we can just call Ffunc_arity, which will return Qmany for &rest, so this help-function-arglist rewrite is totally irrelevant for this bug report.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 20:49 ` Lars Ingebrigtsen @ 2022-07-05 22:37 ` Drew Adams 2022-07-06 18:41 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 0 replies; 36+ messages in thread From: Drew Adams @ 2022-07-05 22:37 UTC (permalink / raw) To: Lars Ingebrigtsen, Michael Heerdegen Cc: laszlomail@protonmail.com, Eli Zaretskii, 45333@debbugs.gnu.org, Stefan Monnier > > (Which reminds me -- I've always found it odd that that function > > lives in help.el, and is in Emacs Lisp instead of C. I don't care where it lives, but why should you even consider moving it to C? Is this to solve some performance problem? Leave it in Lisp, so users can modify or otherwise improve it. More should be moved from C to Lisp, not vice versa. > > It is, after all, used by eldoc etc, So move it somewhere else in Lisp. > and it'd probably be nice if it were more efficient.) That's never been a good enough reason to move something to C. Not unless there's a real performance problem that needs to be solved by doing so (i.e., can't be solved some other, better way). > So I started taking a stab at this to see whether there's > any gains to be had, and I've now basically rewritten it in C. Gag. > And, yes, I think it makes sense, because we can avoid > at least some garbage generating functions without > contorting ourselves too much. Stats? The problem is ________. ? > this help-function-arglist rewrite is totally irrelevant > for this bug report. For what problem do you think it _is_ relevant? Why? ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 20:49 ` Lars Ingebrigtsen 2022-07-05 22:37 ` Drew Adams @ 2022-07-06 18:41 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 7:29 ` Lars Ingebrigtsen 1 sibling, 1 reply; 36+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-06 18:41 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 >> (Which reminds me -- I've always found it odd that that function lives >> in help.el, and is in Emacs Lisp instead of C. It is, after all, used >> by eldoc etc, and it'd probably be nice if it were more efficient.) > So I started taking a stab at this to see whether there's any gains to > be had, and I've now basically rewritten it in C. IIUC you're talking about `help-function-arglist`? > And, yes, I think it makes sense, because we can avoid at least some > garbage generating functions without contorting ourselves too much. I can't think of any reason we'd ever want to use that function anywhere near performance critical code, so I'd rather keep it in ELisp if possible. `help.el` may not be the best choice for it, admittely. Over the course of my hacking on OClosures, I had moved that code (and the accompanying fundoc extraction/addition) to `subr.el` where I think it might make more sense (together with a bit of renaming to take it out of the `help-` namespace). > One thing, though -- I'm not sure how to do the oclosure stuff from C, > so I've added Stefan to the CCs. It's this bit: > > ;; Advice wrappers have "catch all" args, so fetch the actual underlying > ;; function to find the real arguments. > (setq def (advice--cd*r def)) OClosure or not doesn't make much of a difference here, I think (the previous version of the code would also be quite hideous in C). Why not just call `advice--cd*r`? Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-06 18:41 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 7:29 ` Lars Ingebrigtsen 2022-07-07 9:45 ` Lars Ingebrigtsen ` (3 more replies) 0 siblings, 4 replies; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-07 7:29 UTC (permalink / raw) To: Stefan Monnier; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 Stefan Monnier <monnier@iro.umontreal.ca> writes: > I can't think of any reason we'd ever want to use that function anywhere > near performance critical code, so I'd rather keep it in ELisp if > possible. I think it'd be nice to have eldoc generate less garbage, though. > OClosure or not doesn't make much of a difference here, I think (the > previous version of the code would also be quite hideous in C). > Why not just call `advice--cd*r`? Sure, that's possible, but just seems a bit backwards. Anyway, looking at the functionality in this area, things just seem a bit messy overall, and I wonder whether there's any scope here for making things better. For instance, this code: (help-function-arglist 'car t) => (list) What it does is call `documentation', find the "(fn LIST)" at the end, do a `downcase' and `read-from-string' which seems to suggest that upcasing the arguments in the first place before putting them into etc/DOC was the wrong thing to do. Not only do we lose the capitalisation -- if the argument was really `List', that's lost. (Perhaps fortunately, some might say -- we don't really use case much in symbols in Emacs Lisp.) Moreover, looking at the code in make-docfile, it seems to be upcasing wrong, so if the argument had been `lïst', we'd put (fn LïST) into etc/DOC. (And again, it doesn't really matter that much, because we don't really use anything but ASCII.) And even more moreover, if the doc string had (fn [FOO]), `help-function-arglist' would just ignore that and return (arg1), but if it has (fn foo bar zot), it'll return (foo bar zot). (Some of the same issues are with doc strings/arg lists in .elc files.) So two issues: 1) If we have an advertised calling convention, the original arg list can't be recoved. 2) We can't recover the original case of the arguments at all. (Except for lambda/closure forms.) For 2), I think we could stop upcasing arguments and adjust callers -- but old .elc files would still have upcased arguments until recompiled. For 1), we could also stash the actual arglist in addition to the advertised calling convention into .elc/DOC (i.e., two (fn ...) forms, for instance). We could then have (function-arglist FUNC &optional ADVERTISED) that would return either form. (And there's also `advertised-signature-table', which perhaps we could then get rid of?) Of course, I don't really know whether it's worth doing anything about any of this -- but it just seems a bit messy at the moment, and not very satisfactory. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 7:29 ` Lars Ingebrigtsen @ 2022-07-07 9:45 ` Lars Ingebrigtsen 2022-07-07 10:00 ` Stefan Kangas ` (2 subsequent siblings) 3 siblings, 0 replies; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-07 9:45 UTC (permalink / raw) To: Stefan Monnier; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 Lars Ingebrigtsen <larsi@gnus.org> writes: > Of course, I don't really know whether it's worth doing anything about > any of this -- but it just seems a bit messy at the moment, and not very > satisfactory. If we wanted to get more ambitious here, we could get rid of the (fn ...) nonsense altogether. That is, we could store the arg list explicitly, and we could introduce a (declare (calling-convention ...)) form. This would lead to increased memory usage (as we'd probably end up with the arglists being stored in the symbol plist or the like), but it wouldn't be very noticeable, I think. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 7:29 ` Lars Ingebrigtsen 2022-07-07 9:45 ` Lars Ingebrigtsen @ 2022-07-07 10:00 ` Stefan Kangas 2022-07-07 10:06 ` Lars Ingebrigtsen 2022-07-07 13:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 13:58 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 3 siblings, 1 reply; 36+ messages in thread From: Stefan Kangas @ 2022-07-07 10:00 UTC (permalink / raw) To: Lars Ingebrigtsen Cc: Michael Heerdegen, Peter Dean, Eli Zaretskii, Stefan Monnier, 45333 Lars Ingebrigtsen <larsi@gnus.org> writes: > Of course, I don't really know whether it's worth doing anything about > any of this -- but it just seems a bit messy at the moment, and not very > satisfactory. Are we still planning to get rid of DOC at some point? ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 10:00 ` Stefan Kangas @ 2022-07-07 10:06 ` Lars Ingebrigtsen 0 siblings, 0 replies; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-07 10:06 UTC (permalink / raw) To: Stefan Kangas Cc: Michael Heerdegen, Peter Dean, Eli Zaretskii, Stefan Monnier, 45333 Stefan Kangas <stefan@marxist.se> writes: > Are we still planning to get rid of DOC at some point? That would be my preference, but I think we're a ways off -- we'd need to figure out how to compile loaddefs files, and there's still the issue of doc strings from DEFUNs in C files. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 7:29 ` Lars Ingebrigtsen 2022-07-07 9:45 ` Lars Ingebrigtsen 2022-07-07 10:00 ` Stefan Kangas @ 2022-07-07 13:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 14:10 ` Lars Ingebrigtsen 2022-07-07 13:58 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 3 siblings, 1 reply; 36+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 13:54 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 > For 2), I think we could stop upcasing arguments and adjust callers -- > but old .elc files would still have upcased arguments until recompiled. `C-h o` wants them upcased, eldoc wants them downcased. So far we have prioritized `C-h o`. Maybe eldoc shouldn't downcase :-) > For 1), we could also stash the actual arglist in addition to the > advertised calling convention into .elc/DOC (i.e., two (fn ...) forms, > for instance). Why/when do we need the non-advertized arglist? Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 13:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 14:10 ` Lars Ingebrigtsen 2022-07-07 14:49 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-07 14:10 UTC (permalink / raw) To: Stefan Monnier; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 Stefan Monnier <monnier@iro.umontreal.ca> writes: >> For 1), we could also stash the actual arglist in addition to the >> advertised calling convention into .elc/DOC (i.e., two (fn ...) forms, >> for instance). > > Why/when do we need the non-advertized arglist? Because (foo [bar zot] ...) isn't very helpful when doing low level stuff. So `help-function-arglist' returns a non-name-preserving list in that case. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 14:10 ` Lars Ingebrigtsen @ 2022-07-07 14:49 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 14:52 ` Lars Ingebrigtsen 0 siblings, 1 reply; 36+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 14:49 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 Lars Ingebrigtsen [2022-07-07 16:10:58] wrote: > Stefan Monnier <monnier@iro.umontreal.ca> writes: >>> For 1), we could also stash the actual arglist in addition to the >>> advertised calling convention into .elc/DOC (i.e., two (fn ...) forms, >>> for instance). >> Why/when do we need the non-advertized arglist? > Because (foo [bar zot] ...) isn't very helpful when doing low level > stuff. Sorry, both (foo [bar zot] ...) and "doing low level stuff" sound a bit too hypothetical for me to get a sense of what we're talking about. More specifically I don't know of any use of advertized signature that presents the args with a [...] notation, and I can't remember ever needing a pretty arglist when working on "low-level stuff". Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 14:49 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 14:52 ` Lars Ingebrigtsen 2022-07-07 15:05 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-07 14:52 UTC (permalink / raw) To: Stefan Monnier; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 Stefan Monnier <monnier@iro.umontreal.ca> writes: > Sorry, both (foo [bar zot] ...) and "doing low level stuff" sound a bit > too hypothetical for me to get a sense of what we're talking about. > > More specifically I don't know of any use of advertized signature that > presents the args with a [...] notation, --- setq is a special form in src/eval.c. (setq [SYM VAL]...) --- > and I can't remember ever needing a pretty arglist when working on > "low-level stuff". You don't need the pretty arglist, but it can be informative. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 14:52 ` Lars Ingebrigtsen @ 2022-07-07 15:05 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 15:21 ` Lars Ingebrigtsen 0 siblings, 1 reply; 36+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 15:05 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 Lars Ingebrigtsen [2022-07-07 16:52:05] wrote: > Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Sorry, both (foo [bar zot] ...) and "doing low level stuff" sound a bit >> too hypothetical for me to get a sense of what we're talking about. >> >> More specifically I don't know of any use of advertized signature that >> presents the args with a [...] notation, > > --- > setq is a special form in src/eval.c. > > (setq [SYM VAL]...) > --- Ah, so you're not talking about advertised-calling-convention!? >> and I can't remember ever needing a pretty arglist when working on >> "low-level stuff". > You don't need the pretty arglist, but it can be informative. Usually in those cases I look at the source, which is even more informative. Clearly, there is some info we "throw away" or make harder to get to, but to the extent that you can get it back by visiting the source code, I don't see a good reason to spend much effort trying to cater to those very rare needs. Basically, if we want to go there, we start to want to distinguish between: - the "final and pretty" advertized arglist - the "final and pretty" arglist but disregarding advertised-calling-convention - the original arglist rather than the one stashed in the docstring. - the raw arglist seen by the interpreter. I doubt very many chunks of code will know which level to choose (and even fewer will have a good justification for that choice). Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 15:05 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 15:21 ` Lars Ingebrigtsen 2022-07-07 15:30 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-07 15:21 UTC (permalink / raw) To: Stefan Monnier; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 Stefan Monnier <monnier@iro.umontreal.ca> writes: > Ah, so you're not talking about advertised-calling-convention!? No, I'm talking about the... advertised calling convention. > Basically, if we want to go there, we start to want to distinguish > between: > - the "final and pretty" advertized arglist > - the "final and pretty" arglist but disregarding advertised-calling-convention > - the original arglist rather than the one stashed in the docstring. > - the raw arglist seen by the interpreter. > I doubt very many chunks of code will know which level to choose (and > even fewer will have a good justification for that choice). I think there's just two levels that are interesting. We have the er advertised calling convention (whether from advertised-calling-convention or "(fn ...)"), and then the real, actual for sure arglist. The former is what `C-h f' and eldoc wants, and particularly for the latter, it's a shame that it's so hard to get at -- i.e., opening .elc files and chopping up doc strings etc. The actual for sure arglist is needed when you want to redefine functions and the like, and need to actually retain the interface in all details, and today you have to look at the source code to do that, which a self-documenting editor shouldn't need. (But it's pretty rare to need this, so it doesn't matter that it's slow.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 15:21 ` Lars Ingebrigtsen @ 2022-07-07 15:30 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 18:00 ` Lars Ingebrigtsen 0 siblings, 1 reply; 36+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 15:30 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 > I think there's just two levels that are interesting. We have the er > advertised calling convention (whether from > advertised-calling-convention or "(fn ...)"), and then the real, actual > for sure arglist. The "actual for sure arglist" is the one that sometimes comes with bogus names. > The actual for sure arglist is needed when you want to redefine > functions and the like, and need to actually retain the interface in all > details, and today you have to look at the source code to do that, which > a self-documenting editor shouldn't need. (But it's pretty rare to need > this, so it doesn't matter that it's slow.) In my experience once you get to places where you need to care about "the actual for sure arglist" the real needs depend a lot on the specifics, so it's not even clear what would be a good answer that works across the board (e.g. in the presence of CL's &key arguments). The answer you get from `help-function-arglist` without the `preserve-names` arg should be good enough for most cases. I do think the current situation kinda sucks because stashing arglists inside docstrings is a PITA, but it does have its advantages and I haven't seen a good alternative yet. Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 15:30 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 18:00 ` Lars Ingebrigtsen 0 siblings, 0 replies; 36+ messages in thread From: Lars Ingebrigtsen @ 2022-07-07 18:00 UTC (permalink / raw) To: Stefan Monnier; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 Stefan Monnier <monnier@iro.umontreal.ca> writes: > The "actual for sure arglist" is the one that sometimes comes with > bogus names. Yup. > In my experience once you get to places where you need to care about > "the actual for sure arglist" the real needs depend a lot on the > specifics, so it's not even clear what would be a good answer that works > across the board (e.g. in the presence of CL's &key arguments). > The answer you get from `help-function-arglist` without the > `preserve-names` arg should be good enough for most cases. That's basically just a long-winded expansion of `func-arity'. > I do think the current situation kinda sucks because stashing arglists > inside docstrings is a PITA, but it does have its advantages and > I haven't seen a good alternative yet. Well, one easy thing we can do is (pseudo-)deprecate stuff like this: (defun desktop-read (&optional dirname ask) "Read and process the desktop file in directory DIRNAME. [...] \n(fn DIRNAME)" and use (declare (advertised-calling-convention ...)) for those -- then we'd have both the real and the advertised calling convention for all those functions. We can do the same for "(fn [FOO BAR] ..."), but stash it somewhere else than advertised-signature-table since we can't use it the same way for warnings. That fixes either 1) or 2); I forget which way I was counting. The other issue was to make this stuff faster -- `advertised-calling-convention' puts stuff into a hash table, and that's fine. We can do the same with the real arglist, or we can put it in the symbol plist. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-07 7:29 ` Lars Ingebrigtsen ` (2 preceding siblings ...) 2022-07-07 13:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 13:58 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 3 siblings, 0 replies; 36+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-07 13:58 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, laszlomail, Eli Zaretskii, 45333 >> OClosure or not doesn't make much of a difference here, I think (the >> previous version of the code would also be quite hideous in C). >> Why not just call `advice--cd*r`? > Sure, that's possible, but just seems a bit backwards. Don't know about backward, but if you don't like that dependency, you could break it using a hook, like a `function-unwrap-function` whose default value is `identity` and which `nadvice.el` could change to `advice-cd*r`. Stefan ^ permalink raw reply [flat|nested] 36+ messages in thread
* bug#45333: complex command history should not save optional nil parameters 2022-07-05 18:48 ` Lars Ingebrigtsen 2022-07-05 19:06 ` Michael Heerdegen @ 2022-07-05 20:15 ` Drew Adams 1 sibling, 0 replies; 36+ messages in thread From: Drew Adams @ 2022-07-05 20:15 UTC (permalink / raw) To: Lars Ingebrigtsen, Michael Heerdegen Cc: laszlomail@protonmail.com, Eli Zaretskii, 45333@debbugs.gnu.org > The proposal is to only peel the nils of the end if > they are indeed &optional. But why? You're already looking at the doc, which tells you which ones are optional. What's gained? Anyway, that's not what the OP use case was. This enhancement request is for someone saving a Lisp command call to a file of _notes_. If I save this command then I delete the nils, because they are unnecessary there and make the expression noisy in my notes, so I delete them manually: (query-replace-regexp "a" "b") Does that sound like a frequent or important need? Seeing what `repeat-extended-command' is going to reinvoke by default is important interactively. Including for editing. Better to show all of the args, IMO. The save-to-my-notes use case is not what the UI of `repeat-extended-command' is, or should be, designed for. Just one opinion. ^ permalink raw reply [flat|nested] 36+ messages in thread
end of thread, other threads:[~2022-07-07 18:00 UTC | newest] Thread overview: 36+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-12-20 9:01 bug#45333: complex command history should not save optional nil parameters novim via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-06-07 11:57 ` Lars Ingebrigtsen 2022-06-07 13:15 ` Eli Zaretskii 2022-06-07 13:20 ` Eli Zaretskii 2022-06-08 11:43 ` Lars Ingebrigtsen 2022-06-08 13:57 ` Eli Zaretskii 2022-06-09 10:22 ` Lars Ingebrigtsen 2022-06-09 10:33 ` Eli Zaretskii 2022-06-10 8:52 ` Lars Ingebrigtsen 2022-07-05 14:16 ` Michael Heerdegen 2022-07-05 14:53 ` Drew Adams 2022-07-05 16:41 ` Lars Ingebrigtsen 2022-07-05 18:45 ` Michael Heerdegen 2022-07-05 18:48 ` Lars Ingebrigtsen 2022-07-05 19:06 ` Michael Heerdegen 2022-07-05 19:09 ` Lars Ingebrigtsen 2022-07-05 19:43 ` Michael Heerdegen 2022-07-05 19:50 ` Lars Ingebrigtsen 2022-07-05 20:00 ` Drew Adams 2022-07-05 20:49 ` Lars Ingebrigtsen 2022-07-05 22:37 ` Drew Adams 2022-07-06 18:41 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 7:29 ` Lars Ingebrigtsen 2022-07-07 9:45 ` Lars Ingebrigtsen 2022-07-07 10:00 ` Stefan Kangas 2022-07-07 10:06 ` Lars Ingebrigtsen 2022-07-07 13:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 14:10 ` Lars Ingebrigtsen 2022-07-07 14:49 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 14:52 ` Lars Ingebrigtsen 2022-07-07 15:05 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 15:21 ` Lars Ingebrigtsen 2022-07-07 15:30 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-07 18:00 ` Lars Ingebrigtsen 2022-07-07 13:58 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-07-05 20:15 ` Drew Adams
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).