Subject: bug#15748: 24.3.50; `customize-group': Provide a way to hide/show all values

From: Juri Linkov <[email-masked]>
Date: Wed, 11 May 2022 10:05:29 +0300

>> When exploring new packages I often use customize-group to see what
>> settings I can change but it defaults to not showing the values and also
>> showing only the first line of each docstring requiring me to click on
>> "More" for every option.  Having a command to show/hide all values
>> would be very convenient in this case.
>
> I've now added this to Emacs 29 (as custom-toggle-hide-all-variables/`H/).

`H' on a group with subgroups gives on the subgroup widget:

Debugger entered--Lisp error: (error "Invalid widget type")
  error("Invalid widget type")
  custom-toggle-hide-variable((...))
  custom-toggle-hide-all-variables()
  funcall-interactively(custom-toggle-hide-all-variables)
  command-execute(custom-toggle-hide-all-variables)

>> It would be nice to model this on org-cycle and the new outline-cycle
>> command so that S-TAB cycles through the various display states of all
>> options at once.  Such a cycle command should also appear in the
>> Custom menu.
>>
>> Currently <S-tab> is bound to widget-backward in customize buffers but
>> perhaps it and widget-forward could move to C-c C-n/p or M-n/p
>> or something else instead.
>
> I don't think we can move the S-<tab> bindings -- we use them all over
> the place.  I see the charm of reusing Org bindings here, but it's
> unfortunate that they clash with navigation commands common to most
> other modes.

If it's possible to find such a regexp that matches the heading
of every variable section, then outline-minor-mode could be enabled
to bind these keys only on headings.