49.3.3 Local Keymaps
So far, we have explained the ins and outs of the global map. Major
modes customize Emacs by providing their own key bindings in
local keymaps. For example, C mode overrides TAB
to make
it indent the current line for C code. Minor modes can also have
local keymaps; whenever a minor mode is in effect, the definitions in
its keymap override both the major mode’s local keymap and the global
keymap. In addition, portions of text in the buffer can specify their
own keymaps, which override all other keymaps.
A local keymap can redefine a key as a prefix key by defining it as
a prefix keymap. If the key is also defined globally as a prefix, its
local and global definitions (both keymaps) effectively combine: both
definitions are used to look up the event that follows the prefix key.
For example, if a local keymap defines C-c
as a prefix keymap,
and that keymap defines C-z
as a command, this provides a local
meaning for C-c C-z
. This does not affect other sequences that
start with C-c
; if those sequences don’t have their own local
bindings, their global bindings remain in effect.
Another way to think of this is that Emacs handles a multi-event key sequence by looking in several keymaps, one by one, for a binding of the whole key sequence. First it checks the minor mode keymaps for minor modes that are enabled, then it checks the major mode’s keymap, and then it checks the global keymap. This is not precisely how key lookup works, but it’s good enough for understanding the results in ordinary circumstances.