emacs: Local Keymaps

 
 51.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.