Next: , Previous: , Up: Keymaps   [Contents][Index]


26.6 Prefix Keys

A prefix key has an associated keymap that defines what to do with key sequences that start with the prefix key. For example, C-x is a prefix key, and it uses a keymap that is also stored in the variable ctl-x-map. Here is a list of the standard prefix keys of SXEmacs and their keymaps:

The binding of a prefix key is the keymap to use for looking up the events that follow the prefix key. (It may instead be a symbol whose function definition is a keymap. The effect is the same, but the symbol serves as a name for the prefix key.) Thus, the binding of C-x is the symbol Control-X-prefix, whose function definition is the keymap for C-x commands. (The same keymap is also the value of ctl-x-map.)

Prefix key definitions can appear in any active keymap. The definitions of C-c, C-x, C-h and ESC as prefix keys appear in the global map, so these prefix keys are always available. Major and minor modes can redefine a key as a prefix by putting a prefix key definition for it in the local map or the minor mode’s map. See Active Keymaps.

If a key is defined as a prefix in more than one active map, then its various definitions are in effect merged: the commands defined in the minor mode keymaps come first, followed by those in the local map’s prefix definition, and then by those from the global map.

In the following example, we make C-p a prefix key in the local keymap, in such a way that C-p is identical to C-x. Then the binding for C-p C-f is the function find-file, just like C-x C-f. The key sequence C-p 6 is not found in any active keymap.

(use-local-map (make-sparse-keymap))
    ⇒ nil
(local-set-key "\C-p" ctl-x-map)
    ⇒ nil
(key-binding "\C-p\C-f")
    ⇒ find-file
(key-binding "\C-p6")
    ⇒ nil
Function: define-prefix-command symbol &optional mapvar

This function defines symbol as a prefix command: it creates a keymap and stores it as symbol’s function definition. Storing the symbol as the binding of a key makes the key a prefix key that has a name. If optional argument mapvar is not specified, it also sets symbol as a variable, to have the keymap as its value. (If mapvar is given and is not t, its value is stored as the value of symbol.) The function returns symbol.

In Emacs version 18, only the function definition of symbol was set, not the value as a variable.


Next: , Previous: , Up: Keymaps   [Contents][Index]