* bug#57397: 29.0.50; cl-letf blindly macroexpands places
@ 2022-08-25 4:42 Michael Heerdegen
2022-08-25 19:33 ` bug#57397: " Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 15+ messages in thread
From: Michael Heerdegen @ 2022-08-25 4:42 UTC (permalink / raw)
To: 57397; +Cc: Lars Ingebrigtsen, Stefan Monnier
Hello,
background: to get rid of warnings about the recently obsoleted
generalized variables in my init file... because I'm lazy and wanted to
try (and there were only two) I blindly replaced them with synthetic
places - like this:
#+begin_src emacs-lisp
(defun test1 (b query)
(cl-letf (((buffer-local-value 'buffer-save-without-query b)
(or buffer-save-without-query query)))
(with-current-buffer b (save-buffer))))
;; ~~>
(defun test2 (b query)
(cl-letf (((gv-synthetic-place
(buffer-local-value 'buffer-save-without-query b)
(lambda (v) `(setq-local buffer-save-without-query ,v)))
(or buffer-save-without-query query)))
(with-current-buffer b (save-buffer))))
#+end_src
[ I know it is an nonsense example wrt what it does and how it does it,
that doesn't matter. ]
This should get rid of the warning - but in this case it doesn't (in
the other it did). The reason is that Stefan made cl-letf (the helper
cl--letf more precisely), macroexpand each place:
| 91a7f934ac * lisp/emacs-lisp/cl-macs.el: Fix bug#26073.
to support symbol macros better:
#+begin_src emacs-lisp
(defun cl--letf (bindings simplebinds binds body)
;; It's not quite clear what the semantics of cl-letf should be...10..
(if (null bindings)
(if (and (null binds) (null simplebinds)) (macroexp-progn body)..20..)
(let* ((binding (car bindings))
(place (macroexpand (car binding) macroexpand-all-environment)));<--!!
(gv-letplace (getter setter) place..12..))))
#+end_src
I think this is an error in the general case. Maybe it's enough to
expand only symbol macros? It's at least always wrong when (car PLACE)
is a macro name with a gv spec defined.
TIA,
Michael.
In GNU Emacs 29.0.50 (build 2, x86_64-pc-linux-gnu, X toolkit, cairo
version 1.16.0, Xaw scroll bars) of 2022-08-25 built on drachen
Repository revision: bd5b704447ac5ec0559a824209bb01b271d29959
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Debian GNU/Linux 11 (bullseye)
Configured using:
'configure --with-x-toolkit=lucid'
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-08-25 4:42 bug#57397: 29.0.50; cl-letf blindly macroexpands places Michael Heerdegen
@ 2022-08-25 19:33 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-27 1:43 ` Michael Heerdegen
0 siblings, 1 reply; 15+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-08-25 19:33 UTC (permalink / raw)
To: Michael Heerdegen; +Cc: 57397, Lars Ingebrigtsen
> to support symbol macros better:
>
> #+begin_src emacs-lisp
> (defun cl--letf (bindings simplebinds binds body)
> ;; It's not quite clear what the semantics of cl-letf should be...10..
> (if (null bindings)
> (if (and (null binds) (null simplebinds)) (macroexp-progn body)..20..)
> (let* ((binding (car bindings))
> (place (macroexpand (car binding) macroexpand-all-environment)));<--!!
> (gv-letplace (getter setter) place..12..))))
> #+end_src
>
> I think this is an error in the general case. It's at least always
> wrong when (car PLACE) is a macro name with a gv spec defined.
Indeed, defining a gv spec for a macro is fiddly.
> Maybe it's enough to expand only symbol macros?
Yes, that should still cover the original need in bug#26073 without
breaking your use case.
But regardless of this, we should probably turn `gv-synthetic-place`
into a function so it's more robust.
Stefan
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-08-25 19:33 ` bug#57397: " Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-08-27 1:43 ` Michael Heerdegen
2022-08-27 14:48 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 15+ messages in thread
From: Michael Heerdegen @ 2022-08-27 1:43 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 57397, Lars Ingebrigtsen
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> > Maybe it's enough to expand only symbol macros?
>
> Yes, that should still cover the original need in bug#26073 without
> breaking your use case.
Was it necessary to really expand symbol macros to fix that bug, or is
the purpose only to handle the following `symbolp' test correctly?
> But regardless of this, we should probably turn `gv-synthetic-place`
> into a function so it's more robust.
Why is it a macro? Seems to work quite as well (using the same body and
gv-spec) when defined as a function.
Michael.
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-08-27 1:43 ` Michael Heerdegen
@ 2022-08-27 14:48 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-31 1:32 ` Michael Heerdegen
0 siblings, 1 reply; 15+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-08-27 14:48 UTC (permalink / raw)
To: Michael Heerdegen; +Cc: 57397, Lars Ingebrigtsen
>> > Maybe it's enough to expand only symbol macros?
>> Yes, that should still cover the original need in bug#26073 without
>> breaking your use case.
> Was it necessary to really expand symbol macros to fix that bug, or is
> the purpose only to handle the following `symbolp' test correctly?
No the problem shows up in the `gv-letplace` that follows immediately,
so by the time we get to the `symbolp` test it's too late.
But I suspect that the better fix is to skip the macroexpand call here
and to change `gv-get` so as to do a `macroexpand-1` call even if its
arg is a `symbolp`.
>> But regardless of this, we should probably turn `gv-synthetic-place`
>> into a function so it's more robust.
> Why is it a macro?
Beats me.
I tried to ask the original author but he was not available for comments.
> Seems to work quite as well (using the same body and
> gv-spec) when defined as a function.
The only downside is that the code is less efficient (the getter has to
construct the closure of the setter, then call `gv-synthetic-place`
which then just throws it away) but that should be easy to fix with
a compiler macro.
Stefan
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-08-27 14:48 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-08-31 1:32 ` Michael Heerdegen
2022-09-04 2:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 15+ messages in thread
From: Michael Heerdegen @ 2022-08-31 1:32 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 57397, Lars Ingebrigtsen
[-- Attachment #1: Type: text/plain, Size: 972 bytes --]
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> > Was it necessary to really expand symbol macros to fix that bug, or is
> > the purpose only to handle the following `symbolp' test correctly?
>
> No the problem shows up in the `gv-letplace` that follows immediately,
> so by the time we get to the `symbolp` test it's too late.
> But I suspect that the better fix is to skip the macroexpand call here
> and to change `gv-get` so as to do a `macroexpand-1` call even if its
> arg is a `symbolp`.
Ok, you have obviously more insight here, so can you maybe...take over
this part?
> > [`gv-synthetic-place'] seems to work quite as well (using the same
> > body and gv-spec) when defined as a function.
>
> The only downside is that the code is less efficient (the getter has to
> construct the closure of the setter, then call `gv-synthetic-place`
> which then just throws it away) but that should be easy to fix with
> a compiler macro.
Ok - does this look correct?
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Turn-gv-synthetic-place-into-a-function.patch --]
[-- Type: text/x-diff, Size: 1441 bytes --]
From 585981019e32ff4aa1a7ce4614428744d1b55332 Mon Sep 17 00:00:00 2001
From: Michael Heerdegen <michael_heerdegen@web.de>
Date: Wed, 31 Aug 2022 03:13:09 +0200
Subject: [PATCH] Turn gv-synthetic-place into a function
This fixes Bug#57397.
* lisp/emacs-lisp/gv.el (gv-synthetic-place): Make a function and add
trivial compiler macro to avoid decreasing efficiency.
---
lisp/emacs-lisp/gv.el | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index eaab6439ad..9c3f77d2cc 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -532,13 +532,13 @@ plist-get
(funcall do `(error . ,args)
(lambda (v) `(progn ,v (error . ,args))))))
-(defmacro gv-synthetic-place (getter setter)
+(defun gv-synthetic-place (getter setter)
"Special place described by its setter and getter.
GETTER and SETTER (typically obtained via `gv-letplace') get and
-set that place. I.e. This macro allows you to do the \"reverse\" of what
-`gv-letplace' does.
-This macro only makes sense when used in a place."
- (declare (gv-expander funcall))
+set that place. I.e. this function allows you to do the
+\"reverse\" of what `gv-letplace' does. This function only makes
+sense when used in a place."
+ (declare (gv-expander funcall) (compiler-macro (lambda (_) getter)))
(ignore setter)
getter)
--
2.30.2
[-- Attachment #3: Type: text/plain, Size: 729 bytes --]
BTW, I had trouble understanding the paragraph about the compiler-macro
declare specs in (info "(elisp) Declare Form"), in particular the calling
convention:
| [...] When encountering a call to the function, of the form ‘(FUNCTION
| ARGS...)’, the macro expander will call EXPANDER with that form as
| well as with ARGS...
not only because of the colons, but also because it's...wrong? EXPANDER
is called with one argument, and the other formal arguments are
available (bound) to the corresponding argument forms, right?
Could you then maybe rephrase a bit [I don't want to, my English is not
good enough. I'm able to do it but it always takes much too long to
find a good wording.]
TIA,
Michael.
^ permalink raw reply related [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-08-31 1:32 ` Michael Heerdegen
@ 2022-09-04 2:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-28 15:44 ` Michael Heerdegen
0 siblings, 1 reply; 15+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-04 2:55 UTC (permalink / raw)
To: Michael Heerdegen; +Cc: 57397, Lars Ingebrigtsen
>> No the problem shows up in the `gv-letplace` that follows immediately,
>> so by the time we get to the `symbolp` test it's too late.
>> But I suspect that the better fix is to skip the macroexpand call here
>> and to change `gv-get` so as to do a `macroexpand-1` call even if its
>> arg is a `symbolp`.
>
> Ok, you have obviously more insight here, so can you maybe...take over
> this part?
Pushed to `master`.
> Ok - does this look correct?
Looks good, yes.
> BTW, I had trouble understanding the paragraph about the compiler-macro
> declare specs in (info "(elisp) Declare Form"), in particular the calling
> convention:
>
> | [...] When encountering a call to the function, of the form ‘(FUNCTION
> | ARGS...)’, the macro expander will call EXPANDER with that form as
> | well as with ARGS...
>
> not only because of the colons, but also because it's...wrong? EXPANDER
> is called with one argument, and the other formal arguments are
> available (bound) to the corresponding argument forms, right?
There are two cases: one is when EXPANDER is of the form (lambda ...)
and the other is when it's not (in which case it'll be a symbol naming
a function defined elsewhere).
When you write
(defun my-foo (arg1 &optional arg2)
(declare (compiler-macro (lambda (whole) ..blabla..)))
..toto..)
it is macro expanded to something more or less equivalent to:
(defun my-foo (arg1 arg2)
(declare (compiler-macro my-foo--expander))
..toto..)
(defun my-foo--expander (whole arg1 &optional arg2)
..blabla..)
> Could you then maybe rephrase a bit [I don't want to, my English is not
> good enough. I'm able to do it but it always takes much too long to
> find a good wording.]
I can see the source of your confusion, but I'm not sure how to write it
better, without making it much more verbose (and risk making it yet
more confusing).
Would something like the patch below help?
Stefan
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 983dfe2ec59..8e34fdf3640 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -2476,11 +2476,11 @@ Declare Form
expander will call @var{expander} with that form as well as with
@var{args}@dots{}, and @var{expander} can either return a new expression to use
instead of the function call, or it can return just the form unchanged,
-to indicate that the function call should be left alone. @var{expander} can
-be a symbol, or it can be a form @code{(lambda (@var{arg}) @var{body})} in
-which case @var{arg} will hold the original function call expression, and the
-(unevaluated) arguments to the function can be accessed using the function's
-formal arguments.
+to indicate that the function call should be left alone.
+
+To avoid syntactic redundancy, when @var{expander} is of the form
+@code{(lambda (@var{arg}) @var{body})} the function's formal arguments
+are automatically added to the lambda's list of arguments.
@item (gv-expander @var{expander})
Declare @var{expander} to be the function to handle calls to the macro (or
^ permalink raw reply related [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-09-04 2:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-09-28 15:44 ` Michael Heerdegen
2022-09-28 16:29 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 15+ messages in thread
From: Michael Heerdegen @ 2022-09-28 15:44 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 57397, Lars Ingebrigtsen
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
> index 983dfe2ec59..8e34fdf3640 100644
> --- a/doc/lispref/functions.texi
> +++ b/doc/lispref/functions.texi
> @@ -2476,11 +2476,11 @@ Declare Form
> expander will call @var{expander} with that form as well as with
> @var{args}@dots{}, and @var{expander} can either return a new expression to use
> instead of the function call, or it can return just the form unchanged,
> -to indicate that the function call should be left alone. @var{expander} can
> -be a symbol, or it can be a form @code{(lambda (@var{arg}) @var{body})} in
> -which case @var{arg} will hold the original function call expression, and the
> -(unevaluated) arguments to the function can be accessed using the function's
> -formal arguments.
> +to indicate that the function call should be left alone.
> +
> +To avoid syntactic redundancy, when @var{expander} is of the form
> +@code{(lambda (@var{arg}) @var{body})} the function's formal arguments
> +are automatically added to the lambda's list of arguments.
Yes, that would have helped a lot. A definitive improvement.
But could we maybe describe that simpler like "when expander is a lambda
form [...]"? - Because AFAIU these arguments are added to _any_
argument list - with other words, implicitly hint that it's an error to
specify function arguments in the lambda arglist explicitly, or to
provide an empty arglist.
Michael.
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-09-28 15:44 ` Michael Heerdegen
@ 2022-09-28 16:29 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-28 16:52 ` Eli Zaretskii
0 siblings, 1 reply; 15+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-28 16:29 UTC (permalink / raw)
To: Michael Heerdegen; +Cc: 57397, Lars Ingebrigtsen
> But could we maybe describe that simpler like "when expander is a lambda
> form [...]"? - Because AFAIU these arguments are added to _any_
> argument list - with other words, implicitly hint that it's an error to
> specify function arguments in the lambda arglist explicitly, or to
> provide an empty arglist.
OK, thanks, done,
Stefan
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-09-28 16:29 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-09-28 16:52 ` Eli Zaretskii
2022-09-28 17:10 ` Michael Heerdegen
0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2022-09-28 16:52 UTC (permalink / raw)
To: Stefan Monnier; +Cc: michael_heerdegen, 57397, larsi
> Cc: 57397@debbugs.gnu.org, Lars Ingebrigtsen <larsi@gnus.org>
> Date: Wed, 28 Sep 2022 12:29:20 -0400
> From: Stefan Monnier via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>
> > But could we maybe describe that simpler like "when expander is a lambda
> > form [...]"? - Because AFAIU these arguments are added to _any_
> > argument list - with other words, implicitly hint that it's an error to
> > specify function arguments in the lambda arglist explicitly, or to
> > provide an empty arglist.
>
> OK, thanks, done,
IMO, the text which was installed looks devoid of any useful
information:
When EXPANDER is a lambda form it should be of the form
‘(lambda (ARG) BODY)’ because the function’s formal arguments
are automatically added to the lambda’s list of arguments.
Isn't every lambda form _always_ of that form?
And "because" is out of the blue: there's no cause and effect relation
here that I can identify.
The original text was somewhat more self-explanatory:
To avoid syntactic redundancy, when @var{expander} is of the form
@code{(lambda (@var{arg}) @var{body})} the function's formal arguments
are automatically added to the lambda's list of arguments.
This explains the reason, and actually reverses the cause and the
effect, which then make sense. (Although the issue with the form of
lambda still stands.)
What am I missing?
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-09-28 16:52 ` Eli Zaretskii
@ 2022-09-28 17:10 ` Michael Heerdegen
2022-09-28 17:12 ` Lars Ingebrigtsen
2022-09-28 17:15 ` Eli Zaretskii
0 siblings, 2 replies; 15+ messages in thread
From: Michael Heerdegen @ 2022-09-28 17:10 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 57397, larsi, Stefan Monnier
Eli Zaretskii <eliz@gnu.org> writes:
> The original text was somewhat more self-explanatory:
>
> To avoid syntactic redundancy, when @var{expander} is of the form
> @code{(lambda (@var{arg}) @var{body})} the function's formal arguments
> are automatically added to the lambda's list of arguments.
>
> This explains the reason, and actually reverses the cause and the
> effect, which then make sense. (Although the issue with the form of
> lambda still stands.)
Hmm - I liked that wording more, too.
> What am I missing?
We needed to say more clearly that the given lambda form must have an
argument list of exactly one argument.
Michael.
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-09-28 17:10 ` Michael Heerdegen
@ 2022-09-28 17:12 ` Lars Ingebrigtsen
2022-09-28 17:15 ` Eli Zaretskii
1 sibling, 0 replies; 15+ messages in thread
From: Lars Ingebrigtsen @ 2022-09-28 17:12 UTC (permalink / raw)
To: Michael Heerdegen; +Cc: 57397, Eli Zaretskii, Stefan Monnier
Michael Heerdegen <michael_heerdegen@web.de> writes:
> We needed to say more clearly that the given lambda form must have an
> argument list of exactly one argument.
I think you should say exactly that, in those words.
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-09-28 17:10 ` Michael Heerdegen
2022-09-28 17:12 ` Lars Ingebrigtsen
@ 2022-09-28 17:15 ` Eli Zaretskii
2022-09-28 17:56 ` Michael Heerdegen
1 sibling, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2022-09-28 17:15 UTC (permalink / raw)
To: Michael Heerdegen; +Cc: 57397, larsi, monnier
> From: Michael Heerdegen <michael_heerdegen@web.de>
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, 57397@debbugs.gnu.org,
> larsi@gnus.org
> Date: Wed, 28 Sep 2022 19:10:59 +0200
>
> We needed to say more clearly that the given lambda form must have an
> argument list of exactly one argument.
Then just say it, in these very words.
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-09-28 17:15 ` Eli Zaretskii
@ 2022-09-28 17:56 ` Michael Heerdegen
2022-09-28 18:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 15+ messages in thread
From: Michael Heerdegen @ 2022-09-28 17:56 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 57397, larsi, monnier
Eli Zaretskii <eliz@gnu.org> writes:
> Then just say it, in these very words.
Ok...could you please rethink your change then, Stefan?
Thanks,
Michael.
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: cl-letf blindly macroexpands places
2022-09-28 17:56 ` Michael Heerdegen
@ 2022-09-28 18:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-02 18:18 ` bug#57397: 29.0.50; " Michael Heerdegen
0 siblings, 1 reply; 15+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-28 18:15 UTC (permalink / raw)
To: Michael Heerdegen; +Cc: 57397, Eli Zaretskii, larsi
Michael Heerdegen [2022-09-28 19:56:32] wrote:
> Eli Zaretskii <eliz@gnu.org> writes:
>> Then just say it, in these very words.
> Ok...could you please rethink your change then, Stefan?
Hopefully better now,
Stefan
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#57397: 29.0.50; cl-letf blindly macroexpands places
2022-09-28 18:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-10-02 18:18 ` Michael Heerdegen
0 siblings, 0 replies; 15+ messages in thread
From: Michael Heerdegen @ 2022-10-02 18:18 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 57397, Eli Zaretskii, larsi
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> >> Then just say it, in these very words.
> > Ok...could you please rethink your change then, Stefan?
>
> Hopefully better now,
>
>
> Stefan
Yes, better. And I think we are done, so I am closing my report.
Thanks to all,
Michael.
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2022-10-02 18:18 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-25 4:42 bug#57397: 29.0.50; cl-letf blindly macroexpands places Michael Heerdegen
2022-08-25 19:33 ` bug#57397: " Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-27 1:43 ` Michael Heerdegen
2022-08-27 14:48 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-31 1:32 ` Michael Heerdegen
2022-09-04 2:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-28 15:44 ` Michael Heerdegen
2022-09-28 16:29 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-28 16:52 ` Eli Zaretskii
2022-09-28 17:10 ` Michael Heerdegen
2022-09-28 17:12 ` Lars Ingebrigtsen
2022-09-28 17:15 ` Eli Zaretskii
2022-09-28 17:56 ` Michael Heerdegen
2022-09-28 18:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-02 18:18 ` bug#57397: 29.0.50; " Michael Heerdegen
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.