GNU bug report logs - #78608
31.0.50; Todo mode bug revealed by setq-default change

Previous Next

Package: emacs;

Reported by: Stephen Berman <stephen.berman <at> gmx.net>

Date: Tue, 27 May 2025 15:55:02 UTC

Severity: normal

Found in version 31.0.50

Done: Stephen Berman <stephen.berman <at> gmx.net>

Full log


Message #31 received at 78608 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stephen Berman <stephen.berman <at> gmx.net>
Cc: monnier <at> iro.umontreal.ca, 78608 <at> debbugs.gnu.org
Subject: Re: bug#78608: 31.0.50; Todo mode bug revealed by setq-default change
Date: Thu, 29 May 2025 09:14:26 +0300
> 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.