Subject: bug#67196: closed (Re: M-: uses a wrong value of debug-on-error when it is nil.)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 24 Oct 2024 21:35:02 +0000

Your bug report

#67196: M-: uses a wrong value of debug-on-error when it is nil.

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
67196: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67196
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: M-: uses a wrong value of debug-on-error when it is nil.
From: Alan Mackenzie <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Thu, 24 Oct 2024 21:33:41 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

On Wed, Nov 15, 2023 at 13:48:40 +0000, Alan Mackenzie wrote:
> Hello, Emacs.

> On the master branch (and probably any recent Emacs):

> (i) emacs -Q
> (ii) C-h v debug-on-error RET
> (iii) M-: debug-on-error RET

> From (ii) it will be seen that debug-on-error's value is nil.
> (iii) wrongly reports that its value is t.  This is a bug.

> #########################################################################

> What is happening here is that eval-expression binds debug-on-error to
> an uninterned symbol called "t", so that d-o-e will be set to non-nil
> for the evaluation of the coming form.

> This has the unwanted side effect of ignoring the actual value of d-o-e
> in forms which use it.  For example, if the variable is set to a list of
> error symbols, this value gets ignored on evaluating a form with M-:.

This bug was fixed by the following commit:

commit 7959a63ce258c90eb3c7947ab3318c5531eb37d9
Author: Stefan Monnier <[email-masked]>
Date:   Mon Dec 18 23:47:56 2023 -0500

    (eval-expression): Fix bug#67196

by using the newly written handler-bind.

-- 
Alan Mackenzie (Nuremberg, Germany).

Subject: M-: uses a wrong value of debug-on-error when it is nil.
From: Alan Mackenzie <[email-masked]>
To: [email-masked]
Date: Wed, 15 Nov 2023 13:48:40 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello, Emacs.

On the master branch (and probably any recent Emacs):

(i) emacs -Q
(ii) C-h v debug-on-error RET
(iii) M-: debug-on-error RET

>From (ii) it will be seen that debug-on-error's value is nil.
(iii) wrongly reports that its value is t.  This is a bug.

#########################################################################

What is happening here is that eval-expression binds debug-on-error to
an uninterned symbol called "t", so that d-o-e will be set to non-nil
for the evaluation of the coming form.

This has the unwanted side effect of ignoring the actual value of d-o-e
in forms which use it.  For example, if the variable is set to a list of
error symbols, this value gets ignored on evaluating a form with M-:.

-- 
Alan Mackenzie (Nuremberg, Germany).