Subject: Re: bug#70589: [PATCH] Refine the Custom type of generated '*-modes' options

From: Eli Zaretskii <[email-masked]>
Date: Fri, 26 Apr 2024 13:58:15 +0300

> Date: Fri, 26 Apr 2024 11:49:19 +0200
> From:  Eshel Yaron via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <[email-masked]>
> 
> --- a/lisp/emacs-lisp/easy-mmode.el
> +++ b/lisp/emacs-lisp/easy-mmode.el
> @@ -580,7 +580,19 @@ define-globalized-minor-mode
>  and nil means \"don't use\".  There's an implicit nil at the end of the
>  list."
>                        mode)
> -             :type '(repeat sexp)
> +             :type '(choice (const :tag "Enable in all major modes" t)
> +                            (const :tag "Don't enable in any major mode" nil)
> +                            (repeat :tag "Only enable in"
> +                                    (choice
> +                                     (const :tag "All major modes" t)
> +                                     (const :tag "No major mode" nil)
> +                                     (symbol :value fundamental-mode
> +                                             :tag "Specific major mode")
> +                                     (cons :tag "Exclude modes"
> +                                           (const :tag "Exclude..." not)
> +                                           (repeat
> +                                            (symbol :value fundamental-mode
> +                                                    :tag "Major mode"))))))

Why does it make sense to have the "all" and "none" alternatives
twice?