Subject: bug#69079: [PATCH] Add 'customize-toggle-option' command

From: Drew Adams <[email-masked]>
Date: Mon, 12 Feb 2024 18:41:39 +0000

FWIW, (since 2006) Icicles has this, which is bound
to `M-i M-i` during completion.

With a prefix arg you can toggle options and other
variables whose values are generalized Booleans:
`nil' or non-`nil' (not just `t').

This is for toggling an option's current value; it
does only this: (set SYMBOL (not (eval SYMBOL))).
But the completion predicate determines the proper
candidates (depending on prefix arg).

There are (rightfully) many options whose values
are `nil' for false and non-`nil' for true.  If the
command didn't let you toggle such options (with a
prefix arg) then it would be _far_ less useful.
___

Doc string:

Toggle option's value.  This makes sense for binary (toggle) options.
By default, completion candidates are limited to user options that
have `boolean' custom types.  However, there are many "binary" options
that allow other non-nil values than t.

You can use a prefix argument to change the set of completion
candidates, as follows:

 - With a non-negative prefix arg, all user options are candidates.
 - With a negative prefix arg, all variables are candidates.