Subject: Re: bug#37916: GNUS: wrong item selected in gnus-thread-hide-subtree customization

From: Lars Ingebrigtsen <[email-masked]>
Date: Fri, 25 Oct 2019 12:39:56 +0200

Sergey Organov <[email-masked]> writes:

> The "Non-nil" defcustom item is selected in customization buffer when
> actual value of the gnus-thread-hide-subtree is 'nil.

Hm...  'nil and nil are the same.

[...]

> -  :type '(radio (sexp :format "Non-nil\n"
> +  :type '(radio (const nil)
> +		(sexp :format "Non-nil\n"
>  		      :match (lambda (widget value)
>  			       (not (or (consp value) (functionp value))))
>  		      :value t)
> -		(const nil)

Oh, I see.  I think the problem is that that :match is just wrong.
Changing the order of the values (as this patch does) also makes the
problem go away, but I think the right fix here is to fix the :match.

So I've installed the following patch instead:

diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index b5d744843f..f21bc7584e 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -334,7 +334,7 @@ gnus-thread-hide-subtree
   :group 'gnus-thread
   :type '(radio (sexp :format "Non-nil\n"
 		      :match (lambda (widget value)
-			       (not (or (consp value) (functionp value))))
+			       (and value (not (functionp value))))
 		      :value t)
 		(const nil)
 		(sexp :tag "Predicate specifier")))

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no