Subject: Re: bug#76181: 30.0.93; defcustom is not ordering-agnostic

From: Mauro Aranda <[email-masked]>
Date: Mon, 10 Feb 2025 13:19:14 -0300

Robert Pluim <[email-masked]> writes:

 > (this is a reduced test case after I noticed
 > `org-table-duration-custom-format' behaving funny.)
 >
 > emacs -Q -nw
 > ;; evaluate the following defcustoms
 >
 > (defcustom this-is-broken 'one
 >   "user option one"
 >   :type '(choice
 >           (symbol :tag "two" two)
 > 	  (symbol :tag "one" one)))
 >
 > (defcustom this-is-ok 'one
 >   "user option two"
 >   :type '(choice
 > 	  (symbol :tag "one" one)
 >           (symbol :tag "two" two)))
 >
 > M-x customize-variable RET this-is-broken RET
 >
 > ;; The display is wrong, itʼs showing the "two" tag, but the correct
 > ;; value:

For the 'choice type, manual says:

If some values are covered by more than one of the alternatives,
customize will choose the first alternative that the value fits.
This means you should always list the most specific types first,
and the most general last.

So this works as expected, a symbol matches a symbol widget, no matter
what the default value for that symbol widget is.

Alternative is to use const.