1

The Help for key M-x key says

M-x runs the command execute-extended-command (found in global-map),
which is an interactive compiled Lisp function.

It is bound to <execute>, <menu>, M-x.

But in the global-map there is no entry for M-x, there are only entries for execute and menu. Where is the M-x binding present ?

Drew
  • 75,699
  • 9
  • 109
  • 225
john323423
  • 33
  • 3

1 Answers1

1

You say: "But in the global-map there is no entry for M-x, there are only entries for execute and menu."

That's not true. If you are just using C-h v global-map then it's difficult to tell, unless you're good at reading the Lisp representation of a keymap.

Instead, load library help-fns+.el (Help+) and use C-h M-k global-map, to see a human-readable key listing for that keymap. There you'll see this entry, for M-x:

M-x   execute-extended-command

C-h M-k is bound to command describe-keymap.

[Emacs 27 will also have such a command, based on the one in help-fns+.el, but the one in help-fns+.el is still a bit better, IMO. Some of the features of the help-fns+.el definition weren't adopted for vanilla Emacs.]


There is, however, another keymap variable that contains the execute-extended-command binding for M-x: variable esc-map.

Meta keys are in fact on that keymap. ESC followed by a key sequence is essentially the same as META followed by that same key sequence. So M-x is equivalent to ESC x. ESC is not a modifier key here; it's a prefix key.

When you see keys listed in *Help* you'll often notice ESC listed as a prefix key, and you'll see ESC followed by some key sequence listed as a binding.

And you'll see in the value shown for C-h v global-map an entry for ESC-prefix, which means that ESC is a prefix key globally.

NickD
  • 27,023
  • 3
  • 23
  • 42
Drew
  • 75,699
  • 9
  • 109
  • 225
  • I executed "M-x load-library" "help-fns" and then as soon as i press "C-h M-k" , the command mini buffer prints "C-h M-k is undefined". I use emacs 26.3 and "describe-keymap" command is not found. I launched emacs with no config(emacs -q) – john323423 Jun 24 '20 at 17:24
  • Did you follow the links for [`help-fns+.el`](https://www.emacswiki.org/emacs/download/help-fns%2b.el)? Note the **`+`**. – Drew Jun 24 '20 at 19:25
  • See also https://stackoverflow.com/questions/3480173/show-keys-in-emacs-keymap-value – phils Jun 27 '20 at 05:48