Next: Keymaps for Translating Sequences of Events, Previous: Low-Level Key Binding, Up: Keymaps [Contents][Index]
23.14 Remapping CommandsA special kind of key binding can be used to remap one command to another, without having to refer to the key sequence(s) bound to the original command. To use this feature, make a key binding for a key sequence that starts with the dummy event remap
, followed by the command name you want to remap; for the binding, specify the new definition (usually a command name, but possibly any other valid definition for a key binding).
For example, suppose My mode provides a special command my-kill-line
, which should be invoked instead of kill-line
. To establish this, its mode keymap should contain the following remapping:
(keymap-set my-mode-map "<remap> <kill-line>" 'my-kill-line)
Then, whenever my-mode-map
is active, if the user types C-k (the default global key sequence for kill-line
) Emacs will instead run my-kill-line
.
Note that remapping only takes place through active keymaps; for example, putting a remapping in a prefix keymap like ctl-x-map
typically has no effect, as such keymaps are not themselves active. In addition, remapping only works through a single level; in the following example,
(keymap-set my-mode-map "<remap> <kill-line>" 'my-kill-line) (keymap-set my-mode-map "<remap> <my-kill-line>" 'my-other-kill-line)
kill-line
is not remapped to my-other-kill-line
. Instead, if an ordinary key binding specifies kill-line
, it is remapped to my-kill-line
; if an ordinary binding specifies my-kill-line
, it is remapped to my-other-kill-line
.
To undo the remapping of a command, remap it to nil
; e.g.,
(keymap-set my-mode-map "<remap> <kill-line>" nil)
This function returns the remapping for command (a symbol), given the current active keymaps. If command is not remapped (which is the usual situation), or not a symbol, the function returns nil
. position
can optionally specify a buffer position or an event position to determine the keymaps to use, as in key-binding
.
If the optional argument keymaps
is non-nil
, it specifies a list of keymaps to search in. This argument is ignored if position
is non-nil
.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4