Copyright (C) 2000-2012 |
GNU Info (emacs-lisp-intro.info)KeymapsKeymaps ======= Emacs uses "keymaps" to record which keys call which commands. When you use `global-set-key' to set the keybinding for a single command in all parts of Emacs, you are specifying the keybinding in `current-global-map'. Specific modes, such as C mode or Text mode, have their own keymaps; the mode-specific keymaps override the global map that is shared by all buffers. The `global-set-key' function binds, or rebinds, the global keymap. For example, the following binds the key `C-x C-b' to the function `buffer-menu': (global-set-key "\C-x\C-b" 'buffer-menu) Mode-specific keymaps are bound using the `define-key' function, which takes a specific keymap as an argument, as well as the key and the command. For example, my `.emacs' file contains the following expression to bind the `texinfo-insert-@group' command to `C-c C-c g': (define-key texinfo-mode-map "\C-c\C-cg" 'texinfo-insert-@group) The `texinfo-insert-@group' function itself is a little extension to Texinfo mode that inserts `@group' into a Texinfo file. I use this command all the time and prefer to type the three strokes `C-c C-c g' rather than the six strokes `@ g r o u p'. (`@group' and its matching `@end group' are commands that keep all enclosed text together on one page; many multi-line examples in this book are surrounded by `@group ... @end group'.) Here is the `texinfo-insert-@group' function definition: (defun texinfo-insert-@group () "Insert the string @group in a Texinfo buffer." (interactive) (beginning-of-line) (insert "@group\n")) (Of course, I could have used Abbrev mode to save typing, rather than write a function to insert a word; but I prefer key strokes consistent with other Texinfo mode key bindings.) You will see numerous `define-key' expressions in `loaddefs.el' as well as in the various mode libraries, such as `cc-mode.el' and `lisp-mode.el'. Note: Customizing Key Bindings, and Note: Keymaps, for more information about keymaps. automatically generated by info2www version 1.2.2.9 |