Subject: Re: bug#68947: 30.0.50; Gnus article mode keybindings

From: Eric Abrahamsen <[email-masked]>
Date: Sat, 10 Feb 2024 10:09:14 -0800

On 02/07/24 22:19 PM, Pranshu wrote:
> Eric Abrahamsen <[email-masked]> writes:
>
>> Pranshu <[email-masked]> writes:
>>
>>> Recipe from emacs -q:
>>> 1. M-x gnus
>>> 2. Select any group
>>> 3. Select a random article
>>> 4. do `W C-h' or C-h m
>>>
>>> W C-h simply does not work while C-h m works, but does not show the
>>> bound keys.
>>
>> FWIW I'm unable to reproduce this, using Emacs master. I'd be pretty
>> surprised if Gnus were able to break such low-level functionality, too.
>> Can you give us any more clues? Is this something that only started
>> happening recently?
>
> With the point in article mode, are you able to reproduce it?

(Sending this back to the bug report...)

Yes, I'm able to reproduce it, and it sent me down a really awful rabbit
hole -- gnus-art.el goes to huge lengths to make summary-mode
keybindings available in article mode. It uses this:

(substitute-key-definition
 #'undefined #'gnus-article-read-summary-keys gnus-article-mode-map)

to redirect all unbound keys to the `gnus-article-read-summary-keys'
function, which manually reads keys and dispatches to tweaked versions
of summary-mode commands.

Your immediate issue is caused by the fact that
`gnus-article-describe-bindings', which theoretically should be
responsible for telling the user about all the redirections, is only
aware of the "S" keymap prefix. It doesn't know all the ways in which an
'undefined binding might get translated into a valid summary-mode
command, and can't show you those.

To be honest, I don't think I'm going to be able to fix this. If we keep
the current implementation, `gnus-article-describe-bindings' would have
to be made aware of the additional redirections, and I wouldn't even
know where to start.

It could be that Elisp has better tools for this situation by now (the
original architecture was in place before 1997), but I'm not sure what
those tools are. Perhaps someone will chime in with a helpful
suggestion...

Eric