Mercurial > emacs
changeset 73334:794859837fc2
(Key Sequences): Clarify use of kbd.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 11 Oct 2006 20:12:19 +0000 |
parents | af4efe22238c |
children | 52541038732b |
files | lispref/keymaps.texi |
diffstat | 1 files changed, 32 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/lispref/keymaps.texi Wed Oct 11 09:49:15 2006 +0000 +++ b/lispref/keymaps.texi Wed Oct 11 20:12:19 2006 +0000 @@ -94,6 +94,9 @@ (kbd "<f1> SPC") @result{} [f1 32] (kbd "C-M-<down>") @result{} [C-M-down] @end example + +This macro is not meant for use with arguments that vary---only +with string constants. @end defmac @node Keymap Basics @@ -169,6 +172,15 @@ This specifies one binding, for events of type @var{type}. Each ordinary binding applies to events of a particular @dfn{event type}, which is always a character or a symbol. @xref{Classifying Events}. +In this kind of binding, @var{binding} is a command. + +@item (@var{type} @var{item-name} .@: @var{binding}) +This specifies a binding which is also a menu item +named @var{item-name}. @xref{Simple Menu Items}. + +@item (@var{type} menu-item .@: @var{details}) +This specifies a binding which is also a menu item and allows use of +other features. @xref{Extended Menu Items}. @item (t .@: @var{binding}) @cindex default key binding @@ -1947,6 +1959,13 @@ or @code{nil} if it has none. @end defun +The menu's items are the bindings in the keymap. Each binding +associates an event type to a definition, but the event types have no +significance for the menu appearance. (Usually we use pseudo-events, +symbols that the keyboard cannot generate, as the event types for menu +item bindings.) The menu is generated entirely from the bindings that +correspond in the keymap to these events. + The order of items in the menu is the same as the order of bindings in the keymap. Since @code{define-key} puts new bindings at the front, you should define the menu items starting at the bottom of the menu and @@ -1967,8 +1986,8 @@ @node Simple Menu Items @subsubsection Simple Menu Items - The simpler and older way to define a menu keymap binding -looks like this: + The simpler (and original) way to define a menu item is to bind some +event type (it doesn't matter what event type) to a binding like this: @example (@var{item-string} . @var{real-binding}) @@ -1984,25 +2003,26 @@ encoded using the @code{utf-8} coding system and then rendered by the toolkit as it sees fit.} -You can also supply a second string, called the help string, as follows: + You can also supply a second string, called the help string, as follows: @example (@var{item-string} @var{help} . @var{real-binding}) @end example +@noindent @var{help} specifies a ``help-echo'' string to display while the mouse is on that item in the same way as @code{help-echo} text properties (@pxref{Help display}). -As far as @code{define-key} is concerned, @var{item-string} and + As far as @code{define-key} is concerned, @var{item-string} and @var{help-string} are part of the event's binding. However, @code{lookup-key} returns just @var{real-binding}, and only @var{real-binding} is used for executing the key. -If @var{real-binding} is @code{nil}, then @var{item-string} appears in + If @var{real-binding} is @code{nil}, then @var{item-string} appears in the menu but cannot be selected. -If @var{real-binding} is a symbol and has a non-@code{nil} + If @var{real-binding} is a symbol and has a non-@code{nil} @code{menu-enable} property, that property is an expression that controls whether the menu item is enabled. Every time the keymap is used to display a menu, Emacs evaluates the expression, and it enables @@ -2010,12 +2030,12 @@ menu item is disabled, it is displayed in a ``fuzzy'' fashion, and cannot be selected. -The menu bar does not recalculate which items are enabled every time you + The menu bar does not recalculate which items are enabled every time you look at a menu. This is because the X toolkit requires the whole tree of menus in advance. To force recalculation of the menu bar, call @code{force-mode-line-update} (@pxref{Mode Line Format}). -You've probably noticed that menu items show the equivalent keyboard key + You've probably noticed that menu items show the equivalent keyboard key sequence (if any) to invoke the same command. To save time on recalculation, menu display caches this information in a sublist in the binding, like this: @@ -2035,9 +2055,9 @@ @kindex menu-item An extended-format menu item is a more flexible and also cleaner -alternative to the simple format. It consists of a list that starts -with the symbol @code{menu-item}. To define a non-selectable string, -the item looks like this: +alternative to the simple format. You define an event type with a +binding that's a list starting with the symbol @code{menu-item}. +For a non-selectable string, the binding looks like this: @example (menu-item @var{item-name}) @@ -2048,7 +2068,7 @@ see @ref{Menu Separators}. To define a real menu item which can be selected, the extended format -item looks like this: +binding looks like this: @example (menu-item @var{item-name} @var{real-binding}