Subject: bug#58216: 28.2; New help-for-help hides user key bindings

From: Stefan Kangas <[email-masked]>
Date: Sun, 2 Oct 2022 06:51:43 -0700

Allen Li <[email-masked]> writes:

> 1. emacs -Q
> 2. (define-key [?\C-h ?M] #'man)

That doesn't work, so I interpreted this as:

    (global-set-key [?\C-h ?M] #'man)

> 3. C-h C-h

With the above (adjusted) recipe on Emacs 27.1, my " *Metahelp*" buffer
contains the below text.  I don't see the `C-h M' binding in there.

I also tried replacing step 2 with this instead

    (define-key help-map [?M] #'man)

but I still couldn't see `C-h M' in there.

What am I missing?  Could you provide the full text of your
" *Metahelp*" buffer (or a screenshot) with the above recipe?

    You have typed C-h, the help character.  Type a Help option:
    (Use SPC or DEL to scroll through this text.  Type q to exit the
Help command.)

    a PATTERN   Show commands whose name matches the PATTERN (a list of words
                  or a regexp).  See also the ‘apropos’ command.
    b           Display all key bindings.
    c KEYS      Display the command name run by the given key sequence.
    C CODING    Describe the given coding system, or RET for current ones.
    d PATTERN   Show a list of functions, variables, and other items whose
                  documentation matches the PATTERN (a list of words
or a regexp).
    e           Go to the *Messages* buffer which logs echo-area messages.
    f FUNCTION  Display documentation for the given function.
    F COMMAND   Show the Emacs manual’s section that describes the command.
    g           Display information about the GNU project.
    h           Display the HELLO file which illustrates various scripts.
    i           Start the Info documentation reader: read included manuals.
    I METHOD    Describe a specific input method, or RET for current.
    k KEYS      Display the full documentation for the key sequence.
    K KEYS      Show the Emacs manual’s section for the command bound to KEYS.
    l           Show last 300 input keystrokes (lossage).
    L LANG-ENV  Describes a specific language environment, or RET for current.
    m           Display documentation of current minor modes and
current major mode,
                  including their special commands.
    n           Display news of recent Emacs changes.
    o SYMBOL    Display the given function or variable’s documentation
and value.
    p TOPIC     Find packages matching a given topic keyword.
    P PACKAGE   Describe the given Emacs Lisp package.
    r           Display the Emacs manual in Info mode.
    s           Display contents of current syntax table, plus explanations.
    S SYMBOL    Show the section for the given symbol in the Info manual
                  for the programming language used in this buffer.
    t           Start the Emacs learn-by-doing tutorial.
    v VARIABLE  Display the given variable’s documentation and value.
    w COMMAND   Display which keystrokes invoke the given command (where-is).
    .           Display any available local help at point in the echo area.

    C-a         Information about Emacs.
    C-c         Emacs copying permission (GNU General Public License).
    C-d         Instructions for debugging GNU Emacs.
    C-e         External packages and information about Emacs.
    C-f         Emacs FAQ.
    C-m         How to order printed Emacs manuals.
    C-n         News of recent Emacs changes.
    C-o         Emacs ordering and distribution information.
    C-p         Info about known Emacs problems.
    C-s         Search forward "help window".
    C-t         Emacs TODO list.
    C-w         Information on absence of warranty for GNU Emacs.