Subject: Re: bug#72404: 30.0.60; Customization of options is broken

From: Stephen Berman <[email-masked]>
Date: Thu, 01 Aug 2024 19:28:04 +0200

On Thu, 01 Aug 2024 12:12:52 +0200 Stephen Berman <[email-masked]> wrote:

> On Thu, 01 Aug 2024 08:09:52 +0300 Eli Zaretskii <[email-masked]> wrote:
>
>>> From: john muhl <[email-masked]>
>>> Cc: Juri Linkov <[email-masked]>,  Mauro Aranda <[email-masked]>,
>>>   [email-masked],  [email-masked]
>>> Date: Wed, 31 Jul 2024 15:18:46 -0500
>>>
>>> Eli Zaretskii <[email-masked]> writes:
>>>
>>> >> 0. emacs-30 -Q
>>> >> 1. Eval: (require 'log-edit)
>>> >> 2. Check the value of 'log-edit-hook'.
>>> >>    Its value is
>>> >>    (log-edit-insert-message-template log-edit-insert-cvs-template log-edit-insert-changelog log-edit-show-files)
>>> >> 3. M-x customize-variable RET log-edit-hook RET
>>> >> 4. Click the checkbox to enable 'log-edit-insert-cvs-rcstemplate'.
>>> >> 5. Apply
>>> >> 6. Check the value of 'log-edit-hook'.
>>> >>    Its value is (log-edit-insert-cvs-rcstemplate)
>>> >>
>>> >> In GNU Emacs 30.0.60 (build 1, x86_64-pc-linux-gnu, X toolkit,
>>> >>  cairo version 1.16.0, Xaw3d scroll bars) of 2024-07-31
>>> >> Repository revision: ceb5a1522270c41d0c9f5e6b52d61e3173f72f1d
>>> >> Repository branch: emacs-30
>>> >> Windowing system distributor 'The X.Org Foundation', version 11
>>> >> Configured using: 'configure --with-native-compilation --with-x-toolkit=lucid'
>>> >>
>>> >> Whereas in GNU Emacs 29.3.50 it was correctly changed to
>>> >> (log-edit-insert-message-template log-edit-insert-cvs-rcstemplate
>>> >> log-edit-insert-cvs-template log-edit-insert-changelog log-edit-show-files)
>>> >
>>> > Thanks.  Bisection would be useful, I think.
>>> >
>>> > Adding Mauro, in case he has some ideas or even fixes.
>>>
>>> Reverting 8d354925ddb fixes it here.
>>
>> Thanks!
>>
>> Stephen, please look at this ASAP, as this sounds like a serious
>> and very recent regression.
>
> I took a look and tried stepping through with Edebug, but so far could
> not find out how my changes in that commit cause the regression.  I
> won't have time for further debugging until next week, and given my
> unfamiliarty with the widget and custom code (I didn't even know about
> :options till now), I may well not be able to fix this.  Feel free to
> revert the commit in the mean time.  It would also be good to have a
> test for this case (in emacs-30 with the commit all widget and custom
> tests pass).

I did happen to have a bit more time for this problem, and I think I've
found the cause, a single line in commit 8d354925ddb:

diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 693991a6f3e..aa653549dad 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -2549,7 +2549,8 @@ widget-checklist-add-item
 			    (t
 			     (widget-create-child-value
 			      widget type (car (cdr chosen)))
-                             (widget-specify-selected child)))))
+                             ;; (widget-specify-selected child)
+                             ))))
 	       (t
 		(error "Unknown escape `%c'" escape)))))
      ;; Update properties.

With this line commented out as in the above patch, I get the expected
value when carrying out Juri's recipe.  Moreover, after making that
change, I then briefly tested customizing the face widget-unselected
(which the problematic commit added) to inherit from the default face
and it shows the labels of unselected check boxes in the default face,
as it should.  So maybe deleting the commented out line above and
leaving the rest of the change is a sufficient fix.  But I have to admit
I don't know why that line causes the problem, and I haven't done enough
testing of this change to the widget-unselected face feature, so this is
just a status report.

Steve Berman