Subject: bug#64046: 30.0.50; Quoting in customize choice tags

From: Mauro Aranda <[email-masked]>
Date: Sat, 15 Jul 2023 10:20:17 -0300

Stephen Berman <[email-masked]> writes:

 > On Thu, 22 Jun 2023 19:59:26 -0300 Mauro Aranda 
<[email-masked]> wrote:
 >
 >> Stephen Berman <[email-masked]> writes:
 >>
 >>>> Thanks for the feedback.  You're right, that patch is too superficial;
 >>>> it also fails to do substitution in popup extended menus like the one
 >>>> produced by clicking the "State" button, with the result that in the
 >>>> item "Revert This Session's Customization" the apostrophe is not
 >>>> displayed in the "curve" style.  So I revised the patch, attached 
below,
 >>>> to iterate over the elements of each item in ITEMS, and it now appears
 >>>> to handle substitution with the "State" button display correctly, both
 >>>> as popup menu and as text menu buffer.  The latter is the result of
 >>>> applying widget--simplify-menu, if I debugged correctly, so I 
think this
 >>>> answers your concerns (though the text menu buffer already shows the
 >>>> substitution independently of my patch, due to commit bd3b426ebb).  Or
 >>>> have I misunderstood your concerns about widget--simplify-menu?  
If so,
 >>>> can you give an example where the new patch fails?
 >>>
 >>> Just pinging in case this fell under the radar.  If there's no 
response,
 >>> what's the next step forward?
 >>>
 >>> Steve Berman
 >>
 >> It did, thanks for the ping.
 >>
 >> Since there's no problem with widget--simplify-menu, the patch looks
 >> good to me.
 >
 > Thanks.  So Eli, should this go into master, since it's not a
 > regression, or is it ok to install this to the release branch?  It does
 > seem pretty safe, since it's only applying substitute-command-keys in a
 > few more places in widget-choose.
 >
 > Steve Berman

Turns out this code introduces regressions when customizing faces.

With emacs -Q:
M-x customize-face RET default
Action the State button and choose: "For All Kinds of Displays"
Action the Display menu and select "specific display"
Wrong type argument: number-or-marker-p, "        "

The substitute-command-keys operation is too destructive, and messes
with things it shouldn't be modifying, like the :offset property of
widgets in this case.