GNU bug report logs -
#78608
31.0.50; Todo mode bug revealed by setq-default change
Previous Next
Full log
Message #31 received at 78608 <at> debbugs.gnu.org (full text, mbox):
> From: Stephen Berman <stephen.berman <at> gmx.net>
> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 78608 <at> debbugs.gnu.org
> Date: Thu, 29 May 2025 00:58:22 +0200
>
> On Wed, 28 May 2025 21:28:22 +0300 Eli Zaretskii <eliz <at> gnu.org> wrote:
>
> > Stephen, would you mind explaining in more detail what in that commit
> > caused the regression on the master branch? I'd like us all to be on
> > the same page before we decide how (and whether) to document it.
>
> Unfortunately, I have been unable to step through `setq-local' with
> Edebug when the variable `todo-categories' gets set; typing `i' just
> returns me to todo-read-category after the variable gets set. So I only
> see what I reported in the bug report, which I repeat here for
> convenience:
>
> "Th[e] difference between emacs-30 and master manifests itself in the
> function `todo-category-completions' (called from `todo-read-category')
> around the following code:
>
> (with-current-buffer (find-file-noselect f 'nowarn)
> [...]
> (todo-mode)
> [...])
>
> In both master and emacs-30, before entering this sexp, the buffer-local
> value of `todo-categories' is nil, but after invoking `todo-mode' its
> value (for the buffer visiting the Todo file `f') becomes non-nil.
> After leaving the `with-current-buffer' form, `todo-categories' retains
> its non-nil value in master, but reverts to nil in emacs-30. The mode
> function `todo-mode' calls `todo-modes-set-3', which contains the form
> `(setq-local todo-categories (todo-set-categories))'. This led me to
> commit f3e0bdf1b98, and indeed, when I undo that change in master, the
> problematic prompt on calling `todo-jump-to-category' does not happen."
Yes, that was my understanding, and the reason why I thought this
change might affect other Lisp programs.
Stefan, does the above explain/describe the change in behavior of
setq-local in let-bound code, and is it the change you expect from the
changes you installed?
> Can either of you tell me how to debug `setq-local' or what to look for
> in the `with-current-buffer' form to try and find the cause of the
> difference between master and emacs-30?
I hope Stefan will be able to help you there. But the first thing I'd
try when Edebug doesn't help is printf-debugging, i.e. using 'message'
to display values during execution. Did you try that?
This bug report was last modified 20 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.