Add Unicode equivalents for rules.
[emacs.git] / lispref / keymaps.texi
blobecd24704df38dadb3ac7c485101d159124b43b47
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2000
4 @c   Free Software Foundation, Inc. 
5 @c See the file elisp.texi for copying conditions.
6 @setfilename ../info/keymaps
7 @node Keymaps, Modes, Command Loop, Top
8 @chapter Keymaps
9 @cindex keymap
11   The bindings between input events and commands are recorded in data
12 structures called @dfn{keymaps}.  Each binding in a keymap associates
13 (or @dfn{binds}) an individual event type either to another keymap or to
14 a command.  When an event type is bound to a keymap, that keymap is used
15 to look up the next input event; this continues until a command is
16 found.  The whole process is called @dfn{key lookup}.
18 @menu
19 * Keymap Terminology::          Definitions of terms pertaining to keymaps.
20 * Format of Keymaps::           What a keymap looks like as a Lisp object.
21 * Creating Keymaps::            Functions to create and copy keymaps.
22 * Inheritance and Keymaps::     How one keymap can inherit the bindings
23                                    of another keymap.
24 * Prefix Keys::                 Defining a key with a keymap as its definition.
25 * Active Keymaps::              Each buffer has a local keymap
26                                    to override the standard (global) bindings.
27                                    A minor mode can also override them.
28 * Key Lookup::                  How extracting elements from keymaps works.
29 * Functions for Key Lookup::    How to request key lookup.
30 * Changing Key Bindings::       Redefining a key in a keymap.
31 * Key Binding Commands::        Interactive interfaces for redefining keys.
32 * Scanning Keymaps::            Looking through all keymaps, for printing help.
33 * Menu Keymaps::                Defining a menu as a keymap.
34 @end menu
36 @node Keymap Terminology
37 @section Keymap Terminology
38 @cindex key
39 @cindex keystroke
40 @cindex key binding
41 @cindex binding of a key
42 @cindex complete key
43 @cindex undefined key
45   A @dfn{keymap} is a table mapping event types to definitions (which
46 can be any Lisp objects, though only certain types are meaningful for
47 execution by the command loop).  Given an event (or an event type) and a
48 keymap, Emacs can get the event's definition.  Events include
49 characters, function keys, and mouse actions (@pxref{Input Events}).
51   A sequence of input events that form a unit is called a
52 @dfn{key sequence}, or @dfn{key} for short.  A sequence of one event
53 is always a key sequence, and so are some multi-event sequences.
55   A keymap determines a binding or definition for any key sequence.  If
56 the key sequence is a single event, its binding is the definition of the
57 event in the keymap.  The binding of a key sequence of more than one
58 event is found by an iterative process: the binding of the first event
59 is found, and must be a keymap; then the second event's binding is found
60 in that keymap, and so on until all the events in the key sequence are
61 used up.
63   If the binding of a key sequence is a keymap, we call the key sequence
64 a @dfn{prefix key}.  Otherwise, we call it a @dfn{complete key} (because
65 no more events can be added to it).  If the binding is @code{nil},
66 we call the key @dfn{undefined}.  Examples of prefix keys are @kbd{C-c},
67 @kbd{C-x}, and @kbd{C-x 4}.  Examples of defined complete keys are
68 @kbd{X}, @key{RET}, and @kbd{C-x 4 C-f}.  Examples of undefined complete
69 keys are @kbd{C-x C-g}, and @kbd{C-c 3}.  @xref{Prefix Keys}, for more
70 details.
72   The rule for finding the binding of a key sequence assumes that the
73 intermediate bindings (found for the events before the last) are all
74 keymaps; if this is not so, the sequence of events does not form a
75 unit---it is not really one key sequence.  In other words, removing one
76 or more events from the end of any valid key sequence must always yield
77 a prefix key.  For example, @kbd{C-f C-n} is not a key sequence;
78 @kbd{C-f} is not a prefix key, so a longer sequence starting with
79 @kbd{C-f} cannot be a key sequence.
81   The set of possible multi-event key sequences depends on the bindings
82 for prefix keys; therefore, it can be different for different keymaps,
83 and can change when bindings are changed.  However, a one-event sequence
84 is always a key sequence, because it does not depend on any prefix keys
85 for its well-formedness.
87   At any time, several primary keymaps are @dfn{active}---that is, in
88 use for finding key bindings.  These are the @dfn{global map}, which is
89 shared by all buffers; the @dfn{local keymap}, which is usually
90 associated with a specific major mode; and zero or more @dfn{minor mode
91 keymaps}, which belong to currently enabled minor modes.  (Not all minor
92 modes have keymaps.)  The local keymap bindings shadow (i.e., take
93 precedence over) the corresponding global bindings.  The minor mode
94 keymaps shadow both local and global keymaps.  @xref{Active Keymaps},
95 for details.
97 @node Format of Keymaps
98 @section Format of Keymaps
99 @cindex format of keymaps
100 @cindex keymap format
101 @cindex full keymap
102 @cindex sparse keymap
104   A keymap is a list whose @sc{car} is the symbol @code{keymap}.  The
105 remaining elements of the list define the key bindings of the keymap.
106 Use the function @code{keymapp} (see below) to test whether an object is
107 a keymap.
109   Several kinds of elements may appear in a keymap, after the symbol
110 @code{keymap} that begins it:
112 @table @code
113 @item (@var{type} .@: @var{binding})
114 This specifies one binding, for events of type @var{type}.  Each
115 ordinary binding applies to events of a particular @dfn{event type},
116 which is always a character or a symbol.  @xref{Classifying Events}.
118 @item (t .@: @var{binding})
119 @cindex default key binding
120 This specifies a @dfn{default key binding}; any event not bound by other
121 elements of the keymap is given @var{binding} as its binding.  Default
122 bindings allow a keymap to bind all possible event types without having
123 to enumerate all of them.  A keymap that has a default binding
124 completely masks any lower-precedence keymap.
126 @item @var{vector}
127 If an element of a keymap is a vector, the vector counts as bindings for
128 all the @sc{ascii} characters, codes 0 through 127; vector element
129 @var{n} is the binding for the character with code @var{n}.  This is a
130 compact way to record lots of bindings.  A keymap with such a vector is
131 called a @dfn{full keymap}.  Other keymaps are called @dfn{sparse
132 keymaps}.
134 When a keymap contains a vector, it always defines a binding for each
135 @sc{ascii} character, even if the vector contains @code{nil} for that
136 character.  Such a binding of @code{nil} overrides any default key
137 binding in the keymap, for @sc{ascii} characters.  However, default
138 bindings are still meaningful for events other than @sc{ascii}
139 characters.  A binding of @code{nil} does @emph{not} override
140 lower-precedence keymaps; thus, if the local map gives a binding of
141 @code{nil}, Emacs uses the binding from the global map.
143 @item @var{string}
144 @cindex keymap prompt string
145 @cindex overall prompt string
146 @cindex prompt string of keymap
147 Aside from bindings, a keymap can also have a string as an element.
148 This is called the @dfn{overall prompt string} and makes it possible to
149 use the keymap as a menu.  @xref{Defining Menus}.
150 @end table
152 @cindex meta characters lookup
153   Keymaps do not directly record bindings for the meta characters.
154 Instead, meta characters are regarded for purposes of key lookup as
155 sequences of two characters, the first of which is @key{ESC} (or
156 whatever is currently the value of @code{meta-prefix-char}).  Thus, the
157 key @kbd{M-a} is internally represented as @kbd{@key{ESC} a}, and its
158 global binding is found at the slot for @kbd{a} in @code{esc-map}
159 (@pxref{Prefix Keys}).
161   This conversion applies only to characters, not to function keys or
162 other input events; thus, @kbd{M-@key{end}} has nothing to do with
163 @kbd{@key{ESC} @key{end}}.
165   Here as an example is the local keymap for Lisp mode, a sparse
166 keymap.  It defines bindings for @key{DEL} and @key{TAB}, plus @kbd{C-c
167 C-l}, @kbd{M-C-q}, and @kbd{M-C-x}.
169 @example
170 @group
171 lisp-mode-map
172 @result{} 
173 @end group
174 @group
175 (keymap 
176  ;; @key{TAB}
177  (9 . lisp-indent-line)                 
178 @end group
179 @group
180  ;; @key{DEL}
181  (127 . backward-delete-char-untabify)  
182 @end group
183 @group
184  (3 keymap 
185     ;; @kbd{C-c C-l}
186     (12 . run-lisp))                    
187 @end group
188 @group
189  (27 keymap 
190      ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}}
191      (17 . indent-sexp)                 
192      ;; @r{@kbd{M-C-x}, treated as @kbd{@key{ESC} C-x}}
193      (24 . lisp-send-defun)))           
194 @end group
195 @end example
197 @defun keymapp object
198 This function returns @code{t} if @var{object} is a keymap, @code{nil}
199 otherwise.  More precisely, this function tests for a list whose
200 @sc{car} is @code{keymap}.
202 @example
203 @group
204 (keymapp '(keymap))
205     @result{} t
206 @end group
207 @group
208 (keymapp (current-global-map))
209     @result{} t
210 @end group
211 @end example
212 @end defun
214 @node Creating Keymaps
215 @section Creating Keymaps
216 @cindex creating keymaps
218   Here we describe the functions for creating keymaps.
220 @c ??? This should come after make-sparse-keymap
221 @defun make-keymap &optional prompt
222 This function creates and returns a new full keymap (i.e., one
223 containing a vector of length 128 for defining all the @sc{ascii}
224 characters).  The new keymap initially binds all @sc{ascii} characters
225 to @code{nil}, and does not bind any other kind of event.
227 @example
228 @group
229 (make-keymap)
230     @result{} (keymap [nil nil nil @dots{} nil nil])
231 @end group
232 @end example
234 If you specify @var{prompt}, that becomes the overall prompt string for
235 the keymap.  The prompt string should be provided for menu keymaps
236 (@pxref{Defining Menus}).
237 @end defun
239 @defun make-sparse-keymap &optional prompt
240 This function creates and returns a new sparse keymap with no entries.
241 The new keymap does not bind any events.  The argument @var{prompt}
242 specifies a prompt string, as in @code{make-keymap}.
244 @example
245 @group
246 (make-sparse-keymap)
247     @result{} (keymap)
248 @end group
249 @end example
250 @end defun
252 @defun copy-keymap keymap
253 This function returns a copy of @var{keymap}.  Any keymaps that
254 appear directly as bindings in @var{keymap} are also copied recursively,
255 and so on to any number of levels.  However, recursive copying does not
256 take place when the definition of a character is a symbol whose function
257 definition is a keymap; the same symbol appears in the new copy.
258 @c Emacs 19 feature
260 @example
261 @group
262 (setq map (copy-keymap (current-local-map)))
263 @result{} (keymap
264 @end group
265 @group
266      ;; @r{(This implements meta characters.)}
267      (27 keymap         
268          (83 . center-paragraph)
269          (115 . center-line))
270      (9 . tab-to-tab-stop))
271 @end group
273 @group
274 (eq map (current-local-map))
275     @result{} nil
276 @end group
277 @group
278 (equal map (current-local-map))
279     @result{} t
280 @end group
281 @end example
282 @end defun
284 @node Inheritance and Keymaps
285 @section Inheritance and Keymaps
286 @cindex keymap inheritance
287 @cindex inheriting a keymap's bindings
289   A keymap can inherit the bindings of another keymap, which we call the
290 @dfn{parent keymap}.  Such a keymap looks like this:
292 @example
293 (keymap @var{bindings}@dots{} . @var{parent-keymap})
294 @end example
296 @noindent
297 The effect is that this keymap inherits all the bindings of
298 @var{parent-keymap}, whatever they may be at the time a key is looked up,
299 but can add to them or override them with @var{bindings}.
301 If you change the bindings in @var{parent-keymap} using @code{define-key}
302 or other key-binding functions, these changes are visible in the
303 inheriting keymap unless shadowed by @var{bindings}.  The converse is
304 not true: if you use @code{define-key} to change the inheriting keymap,
305 that affects @var{bindings}, but has no effect on @var{parent-keymap}.
307 The proper way to construct a keymap with a parent is to use
308 @code{set-keymap-parent}; if you have code that directly constructs a
309 keymap with a parent, please convert the program to use
310 @code{set-keymap-parent} instead.
312 @defun keymap-parent keymap
313 This returns the parent keymap of @var{keymap}.  If @var{keymap}
314 has no parent, @code{keymap-parent} returns @code{nil}.
315 @end defun
317 @defun set-keymap-parent keymap parent
318 This sets the parent keymap of @var{keymap} to @var{parent}, and returns
319 @var{parent}.  If @var{parent} is @code{nil}, this function gives
320 @var{keymap} no parent at all.
322 If @var{keymap} has submaps (bindings for prefix keys), they too receive
323 new parent keymaps that reflect what @var{parent} specifies for those
324 prefix keys.
325 @end defun
327 Here is an example showing how to make a keymap that inherits
328 from @code{text-mode-map}:
330 @example
331 (let ((map (make-sparse-keymap)))
332   (set-keymap-parent map text-mode-map)
333   map)
334 @end example
336 @node Prefix Keys
337 @section Prefix Keys
338 @cindex prefix key
340   A @dfn{prefix key} is a key sequence whose binding is a keymap.  The
341 keymap defines what to do with key sequences that extend the prefix key.
342 For example, @kbd{C-x} is a prefix key, and it uses a keymap that is
343 also stored in the variable @code{ctl-x-map}.  This keymap defines
344 bindings for key sequences starting with @kbd{C-x}.
346   Some of the standard Emacs prefix keys use keymaps that are
347 also found in Lisp variables:
349 @itemize @bullet
350 @item
351 @vindex esc-map
352 @findex ESC-prefix
353 @code{esc-map} is the global keymap for the @key{ESC} prefix key.  Thus,
354 the global definitions of all meta characters are actually found here.
355 This map is also the function definition of @code{ESC-prefix}.
357 @item
358 @cindex @kbd{C-h}
359 @code{help-map} is the global keymap for the @kbd{C-h} prefix key.
361 @item
362 @cindex @kbd{C-c}
363 @vindex mode-specific-map
364 @code{mode-specific-map} is the global keymap for the prefix key
365 @kbd{C-c}.  This map is actually global, not mode-specific, but its name
366 provides useful information about @kbd{C-c} in the output of @kbd{C-h b}
367 (@code{display-bindings}), since the main use of this prefix key is for
368 mode-specific bindings.
370 @item
371 @cindex @kbd{C-x}
372 @vindex ctl-x-map
373 @findex Control-X-prefix
374 @code{ctl-x-map} is the global keymap used for the @kbd{C-x} prefix key.
375 This map is found via the function cell of the symbol
376 @code{Control-X-prefix}.
378 @item
379 @cindex @kbd{C-x @key{RET}}
380 @vindex mule-keymap
381 @code{mule-keymap} is the global keymap used for the @kbd{C-x @key{RET}}
382 prefix key.
384 @item
385 @cindex @kbd{C-x 4}
386 @vindex ctl-x-4-map
387 @code{ctl-x-4-map} is the global keymap used for the @kbd{C-x 4} prefix
388 key.
390 @c Emacs 19 feature
391 @item
392 @cindex @kbd{C-x 5}
393 @vindex ctl-x-5-map
394 @code{ctl-x-5-map} is the global keymap used for the @kbd{C-x 5} prefix
395 key.
397 @c Emacs 19 feature
398 @item
399 @cindex @kbd{C-x 6}
400 @vindex 2C-mode-map
401 @code{2C-mode-map} is the global keymap used for the @kbd{C-x 6} prefix
402 key.
404 @item
405 @cindex @kbd{C-x v}
406 @vindex vc-prefix-map
407 @code{vc-prefix-map} is the global keymap used for the @kbd{C-x v} prefix
408 key.
410 @item
411 @cindex @kbd{M-g}
412 @vindex facemenu-keymap
413 @code{facemenu-keymap} is the global keymap used for the @kbd{M-g}
414 prefix key.
416 @c Emacs 19 feature
417 @item
418 The other Emacs prefix keys are @kbd{C-x @@}, @kbd{C-x a i}, @kbd{C-x
419 @key{ESC}} and @kbd{@key{ESC} @key{ESC}}.  They use keymaps that have no
420 special names.
421 @end itemize
423   The keymap binding of a prefix key is used for looking up the event
424 that follows the prefix key.  (It may instead be a symbol whose function
425 definition is a keymap.  The effect is the same, but the symbol serves
426 as a name for the prefix key.)  Thus, the binding of @kbd{C-x} is the
427 symbol @code{Control-X-prefix}, whose function cell holds the keymap
428 for @kbd{C-x} commands.  (The same keymap is also the value of
429 @code{ctl-x-map}.)
431   Prefix key definitions can appear in any active keymap.  The
432 definitions of @kbd{C-c}, @kbd{C-x}, @kbd{C-h} and @key{ESC} as prefix
433 keys appear in the global map, so these prefix keys are always
434 available.  Major and minor modes can redefine a key as a prefix by
435 putting a prefix key definition for it in the local map or the minor
436 mode's map.  @xref{Active Keymaps}.
438   If a key is defined as a prefix in more than one active map, then its
439 various definitions are in effect merged: the commands defined in the
440 minor mode keymaps come first, followed by those in the local map's
441 prefix definition, and then by those from the global map.
443   In the following example, we make @kbd{C-p} a prefix key in the local
444 keymap, in such a way that @kbd{C-p} is identical to @kbd{C-x}.  Then
445 the binding for @kbd{C-p C-f} is the function @code{find-file}, just
446 like @kbd{C-x C-f}.  The key sequence @kbd{C-p 6} is not found in any
447 active keymap.
449 @example
450 @group
451 (use-local-map (make-sparse-keymap))
452     @result{} nil
453 @end group
454 @group
455 (local-set-key "\C-p" ctl-x-map)
456     @result{} nil
457 @end group
458 @group
459 (key-binding "\C-p\C-f")
460     @result{} find-file
461 @end group
463 @group
464 (key-binding "\C-p6")
465     @result{} nil
466 @end group
467 @end example
469 @defun define-prefix-command symbol &optional mapvar prompt
470 @cindex prefix command
471 This function prepares @var{symbol} for use as a prefix key's binding:
472 it creates a sparse keymap and stores it as @var{symbol}'s function
473 definition.  Subsequently binding a key sequence to @var{symbol} will
474 make that key sequence into a prefix key.  The return value is @code{symbol}.
476 This function also sets @var{symbol} as a variable, with the keymap as
477 its value.  But if @var{mapvar} is non-@code{nil}, it sets @var{mapvar}
478 as a variable instead.
480 If @var{prompt} is non-@code{nil}, that becomes the overall prompt
481 string for the keymap.  The prompt string should be given for menu keymaps
482 (@pxref{Defining Menus}).
483 @end defun
485 @node Active Keymaps
486 @section Active Keymaps
487 @cindex active keymap
488 @cindex global keymap
489 @cindex local keymap
491   Emacs normally contains many keymaps; at any given time, just a few of
492 them are @dfn{active} in that they participate in the interpretation
493 of user input.  These are the global keymap, the current buffer's
494 local keymap, and the keymaps of any enabled minor modes.
496   The @dfn{global keymap} holds the bindings of keys that are defined
497 regardless of the current buffer, such as @kbd{C-f}.  The variable
498 @code{global-map} holds this keymap, which is always active.
500   Each buffer may have another keymap, its @dfn{local keymap}, which may
501 contain new or overriding definitions for keys.  The current buffer's
502 local keymap is always active except when @code{overriding-local-map}
503 overrides it.  Text properties can specify an alternative local map for
504 certain parts of the buffer; see @ref{Special Properties}.
506   Each minor mode can have a keymap; if it does, the keymap is active
507 when the minor mode is enabled.
509   The variable @code{overriding-local-map}, if non-@code{nil}, specifies
510 another local keymap that overrides the buffer's local map and all the 
511 minor mode keymaps.
513   All the active keymaps are used together to determine what command to
514 execute when a key is entered.  Emacs searches these maps one by one, in
515 order of decreasing precedence, until it finds a binding in one of the
516 maps.  The procedure for searching a single keymap is called @dfn{key
517 lookup}; see @ref{Key Lookup}.
519   Normally, Emacs first searches for the key in the minor mode maps, in
520 the order specified by @code{minor-mode-map-alist}; if they do not
521 supply a binding for the key, Emacs searches the local map; if that too
522 has no binding, Emacs then searches the global map.  However, if
523 @code{overriding-local-map} is non-@code{nil}, Emacs searches that map
524 first, before the global map.
526 @cindex major mode keymap
527   Since every buffer that uses the same major mode normally uses the
528 same local keymap, you can think of the keymap as local to the mode.  A
529 change to the local keymap of a buffer (using @code{local-set-key}, for
530 example) is seen also in the other buffers that share that keymap.
532   The local keymaps that are used for Lisp mode and some other major
533 modes exist even if they have not yet been used.  These local maps are
534 the values of variables such as @code{lisp-mode-map}.  For most major
535 modes, which are less frequently used, the local keymap is constructed
536 only when the mode is used for the first time in a session.
538   The minibuffer has local keymaps, too; they contain various completion
539 and exit commands.  @xref{Intro to Minibuffers}.
541   Emacs has other keymaps that are used in a different way---translating
542 events within @code{read-key-sequence}.  @xref{Translating Input}.
544   @xref{Standard Keymaps}, for a list of standard keymaps.
546 @defvar global-map
547 This variable contains the default global keymap that maps Emacs
548 keyboard input to commands.  The global keymap is normally this keymap.
549 The default global keymap is a full keymap that binds
550 @code{self-insert-command} to all of the printing characters.
552 It is normal practice to change the bindings in the global map, but you
553 should not assign this variable any value other than the keymap it starts
554 out with.
555 @end defvar
557 @defun current-global-map
558 This function returns the current global keymap.  This is the
559 same as the value of @code{global-map} unless you change one or the
560 other.
562 @example
563 @group
564 (current-global-map)
565 @result{} (keymap [set-mark-command beginning-of-line @dots{} 
566             delete-backward-char])
567 @end group
568 @end example
569 @end defun
571 @defun current-local-map
572 This function returns the current buffer's local keymap, or @code{nil}
573 if it has none.  In the following example, the keymap for the
574 @samp{*scratch*} buffer (using Lisp Interaction mode) is a sparse keymap
575 in which the entry for @key{ESC}, @sc{ascii} code 27, is another sparse
576 keymap.
578 @example
579 @group
580 (current-local-map)
581 @result{} (keymap 
582     (10 . eval-print-last-sexp) 
583     (9 . lisp-indent-line) 
584     (127 . backward-delete-char-untabify) 
585 @end group
586 @group
587     (27 keymap 
588         (24 . eval-defun) 
589         (17 . indent-sexp)))
590 @end group
591 @end example
592 @end defun
594 @defun current-minor-mode-maps
595 This function returns a list of the keymaps of currently enabled minor modes.
596 @end defun
598 @defun use-global-map keymap
599 This function makes @var{keymap} the new current global keymap.  It
600 returns @code{nil}.
602 It is very unusual to change the global keymap.
603 @end defun
605 @defun use-local-map keymap
606 This function makes @var{keymap} the new local keymap of the current
607 buffer.  If @var{keymap} is @code{nil}, then the buffer has no local
608 keymap.  @code{use-local-map} returns @code{nil}.  Most major mode
609 commands use this function.
610 @end defun
612 @c Emacs 19 feature
613 @defvar minor-mode-map-alist
614 This variable is an alist describing keymaps that may or may not be
615 active according to the values of certain variables.  Its elements look
616 like this:
618 @example
619 (@var{variable} . @var{keymap})
620 @end example
622 The keymap @var{keymap} is active whenever @var{variable} has a
623 non-@code{nil} value.  Typically @var{variable} is the variable that
624 enables or disables a minor mode.  @xref{Keymaps and Minor Modes}.
626 Note that elements of @code{minor-mode-map-alist} do not have the same
627 structure as elements of @code{minor-mode-alist}.  The map must be the
628 @sc{cdr} of the element; a list with the map as the second element will
629 not do.  The @sc{cdr} can be either a keymap (a list) or a symbol whose
630 function definition is a keymap.
632 When more than one minor mode keymap is active, their order of priority
633 is the order of @code{minor-mode-map-alist}.  But you should design
634 minor modes so that they don't interfere with each other.  If you do
635 this properly, the order will not matter.
637 See @ref{Keymaps and Minor Modes}, for more information about minor
638 modes.  See also @code{minor-mode-key-binding} (@pxref{Functions for Key
639 Lookup}).
640 @end defvar
642 @defvar minor-mode-overriding-map-alist
643 This variable allows major modes to override the key bindings for
644 particular minor modes.  The elements of this alist look like the
645 elements of @code{minor-mode-map-alist}: @code{(@var{variable}
646 . @var{keymap})}.
648 If a variable appears as an element of
649 @code{minor-mode-overriding-map-alist}, the map specified by that
650 element totally replaces any map specified for the same variable in
651 @code{minor-mode-map-alist}.
653 @code{minor-mode-overriding-map-alist} is automatically buffer-local in
654 all buffers.
655 @end defvar
657 @defvar overriding-local-map
658 If non-@code{nil}, this variable holds a keymap to use instead of the
659 buffer's local keymap and instead of all the minor mode keymaps.  This
660 keymap, if any, overrides all other maps that would have been active,
661 except for the current global map.
662 @end defvar
664 @defvar overriding-terminal-local-map
665 If non-@code{nil}, this variable holds a keymap to use instead of
666 @code{overriding-local-map}, the buffer's local keymap and all the minor
667 mode keymaps.
669 This variable is always local to the current terminal and cannot be
670 buffer-local.  @xref{Multiple Displays}.  It is used to implement
671 incremental search mode.
672 @end defvar
674 @defvar overriding-local-map-menu-flag
675 If this variable is non-@code{nil}, the value of
676 @code{overriding-local-map} or @code{overriding-terminal-local-map} can
677 affect the display of the menu bar.  The default value is @code{nil}, so
678 those map variables have no effect on the menu bar.
680 Note that these two map variables do affect the execution of key
681 sequences entered using the menu bar, even if they do not affect the
682 menu bar display.  So if a menu bar key sequence comes in, you should
683 clear the variables before looking up and executing that key sequence.
684 Modes that use the variables would typically do this anyway; normally
685 they respond to events that they do not handle by ``unreading'' them and
686 exiting.
687 @end defvar
689 @defvar special-event-map
690 This variable holds a keymap for special events.  If an event type has a
691 binding in this keymap, then it is special, and the binding for the
692 event is run directly by @code{read-event}.  @xref{Special Events}.
693 @end defvar
695 @node Key Lookup
696 @section Key Lookup
697 @cindex key lookup
698 @cindex keymap entry
700   @dfn{Key lookup} is the process of finding the binding of a key
701 sequence from a given keymap.  Actual execution of the binding is not
702 part of key lookup.
704   Key lookup uses just the event type of each event in the key sequence;
705 the rest of the event is ignored.  In fact, a key sequence used for key
706 lookup may designate mouse events with just their types (symbols)
707 instead of with entire mouse events (lists).  @xref{Input Events}.  Such
708 a ``key-sequence'' is insufficient for @code{command-execute} to run,
709 but it is sufficient for looking up or rebinding a key.
711   When the key sequence consists of multiple events, key lookup
712 processes the events sequentially: the binding of the first event is
713 found, and must be a keymap; then the second event's binding is found in
714 that keymap, and so on until all the events in the key sequence are used
715 up.  (The binding thus found for the last event may or may not be a
716 keymap.)  Thus, the process of key lookup is defined in terms of a
717 simpler process for looking up a single event in a keymap.  How that is
718 done depends on the type of object associated with the event in that
719 keymap.
721   Let's use the term @dfn{keymap entry} to describe the value found by
722 looking up an event type in a keymap.  (This doesn't include the item
723 string and other extra elements in menu key bindings, because
724 @code{lookup-key} and other key lookup functions don't include them in
725 the returned value.)  While any Lisp object may be stored in a keymap as
726 a keymap entry, not all make sense for key lookup.  Here is a table of
727 the meaningful kinds of keymap entries:
729 @table @asis
730 @item @code{nil}
731 @cindex @code{nil} in keymap
732 @code{nil} means that the events used so far in the lookup form an
733 undefined key.  When a keymap fails to mention an event type at all, and
734 has no default binding, that is equivalent to a binding of @code{nil}
735 for that event type.
737 @item @var{command}
738 @cindex command in keymap
739 The events used so far in the lookup form a complete key,
740 and @var{command} is its binding.  @xref{What Is a Function}.
742 @item @var{array}
743 @cindex string in keymap
744 The array (either a string or a vector) is a keyboard macro.  The events
745 used so far in the lookup form a complete key, and the array is its
746 binding.  See @ref{Keyboard Macros}, for more information.
748 @item @var{keymap}
749 @cindex keymap in keymap
750 The events used so far in the lookup form a prefix key.  The next
751 event of the key sequence is looked up in @var{keymap}.
753 @item @var{list}
754 @cindex list in keymap
755 The meaning of a list depends on the types of the elements of the list.
757 @itemize @bullet
758 @item
759 If the @sc{car} of @var{list} is the symbol @code{keymap}, then the list
760 is a keymap, and is treated as a keymap (see above).
762 @item
763 @cindex @code{lambda} in keymap
764 If the @sc{car} of @var{list} is @code{lambda}, then the list is a
765 lambda expression.  This is presumed to be a command, and is treated as
766 such (see above).
768 @item
769 If the @sc{car} of @var{list} is a keymap and the @sc{cdr} is an event
770 type, then this is an @dfn{indirect entry}:
772 @example
773 (@var{othermap} . @var{othertype})
774 @end example
776 When key lookup encounters an indirect entry, it looks up instead the
777 binding of @var{othertype} in @var{othermap} and uses that.
779 This feature permits you to define one key as an alias for another key.
780 For example, an entry whose @sc{car} is the keymap called @code{esc-map}
781 and whose @sc{cdr} is 32 (the code for @key{SPC}) means, ``Use the global
782 binding of @kbd{Meta-@key{SPC}}, whatever that may be.''
783 @end itemize
785 @item @var{symbol}
786 @cindex symbol in keymap
787 The function definition of @var{symbol} is used in place of
788 @var{symbol}.  If that too is a symbol, then this process is repeated,
789 any number of times.  Ultimately this should lead to an object that is
790 a keymap, a command, or a keyboard macro.  A list is allowed if it is a
791 keymap or a command, but indirect entries are not understood when found
792 via symbols.
794 Note that keymaps and keyboard macros (strings and vectors) are not
795 valid functions, so a symbol with a keymap, string, or vector as its
796 function definition is invalid as a function.  It is, however, valid as
797 a key binding.  If the definition is a keyboard macro, then the symbol
798 is also valid as an argument to @code{command-execute}
799 (@pxref{Interactive Call}).
801 @cindex @code{undefined} in keymap
802 The symbol @code{undefined} is worth special mention: it means to treat
803 the key as undefined.  Strictly speaking, the key is defined, and its
804 binding is the command @code{undefined}; but that command does the same
805 thing that is done automatically for an undefined key: it rings the bell
806 (by calling @code{ding}) but does not signal an error.
808 @cindex preventing prefix key
809 @code{undefined} is used in local keymaps to override a global key
810 binding and make the key ``undefined'' locally.  A local binding of
811 @code{nil} would fail to do this because it would not override the
812 global binding.
814 @item @var{anything else}
815 If any other type of object is found, the events used so far in the
816 lookup form a complete key, and the object is its binding, but the
817 binding is not executable as a command.
818 @end table
820   In short, a keymap entry may be a keymap, a command, a keyboard macro,
821 a symbol that leads to one of them, or an indirection or @code{nil}.
822 Here is an example of a sparse keymap with two characters bound to
823 commands and one bound to another keymap.  This map is the normal value
824 of @code{emacs-lisp-mode-map}.  Note that 9 is the code for @key{TAB},
825 127 for @key{DEL}, 27 for @key{ESC}, 17 for @kbd{C-q} and 24 for
826 @kbd{C-x}.
828 @example
829 @group
830 (keymap (9 . lisp-indent-line)
831         (127 . backward-delete-char-untabify)
832         (27 keymap (17 . indent-sexp) (24 . eval-defun)))
833 @end group
834 @end example
836 @node Functions for Key Lookup
837 @section Functions for Key Lookup
839   Here are the functions and variables pertaining to key lookup.
841 @defun lookup-key keymap key &optional accept-defaults
842 This function returns the definition of @var{key} in @var{keymap}.  All
843 the other functions described in this chapter that look up keys use
844 @code{lookup-key}.  Here are examples:
846 @example
847 @group
848 (lookup-key (current-global-map) "\C-x\C-f")
849     @result{} find-file
850 @end group
851 @group
852 (lookup-key (current-global-map) "\C-x\C-f12345")
853     @result{} 2
854 @end group
855 @end example
857 If the string or vector @var{key} is not a valid key sequence according
858 to the prefix keys specified in @var{keymap}, it must be ``too long''
859 and have extra events at the end that do not fit into a single key
860 sequence.  Then the value is a number, the number of events at the front
861 of @var{key} that compose a complete key.
863 @c Emacs 19 feature
864 If @var{accept-defaults} is non-@code{nil}, then @code{lookup-key}
865 considers default bindings as well as bindings for the specific events
866 in @var{key}.  Otherwise, @code{lookup-key} reports only bindings for
867 the specific sequence @var{key}, ignoring default bindings except when
868 you explicitly ask about them.  (To do this, supply @code{t} as an
869 element of @var{key}; see @ref{Format of Keymaps}.)
871 If @var{key} contains a meta character (not a function key), that
872 character is implicitly replaced by a two-character sequence: the value
873 of @code{meta-prefix-char}, followed by the corresponding non-meta
874 character.  Thus, the first example below is handled by conversion into
875 the second example.
877 @example
878 @group
879 (lookup-key (current-global-map) "\M-f")
880     @result{} forward-word
881 @end group
882 @group
883 (lookup-key (current-global-map) "\ef")
884     @result{} forward-word
885 @end group
886 @end example
888 Unlike @code{read-key-sequence}, this function does not modify the
889 specified events in ways that discard information (@pxref{Key Sequence
890 Input}).  In particular, it does not convert letters to lower case and
891 it does not change drag events to clicks.
892 @end defun
894 @deffn Command undefined
895 Used in keymaps to undefine keys.  It calls @code{ding}, but does
896 not cause an error.
897 @end deffn
899 @defun key-binding key &optional accept-defaults
900 This function returns the binding for @var{key} in the current
901 keymaps, trying all the active keymaps.  The result is @code{nil} if
902 @var{key} is undefined in the keymaps.
904 @c Emacs 19 feature
905 The argument @var{accept-defaults} controls checking for default
906 bindings, as in @code{lookup-key} (above).
908 An error is signaled if @var{key} is not a string or a vector.
910 @example
911 @group
912 (key-binding "\C-x\C-f")
913     @result{} find-file
914 @end group
915 @end example
916 @end defun
918 @defun local-key-binding key &optional accept-defaults
919 This function returns the binding for @var{key} in the current
920 local keymap, or @code{nil} if it is undefined there.
922 @c Emacs 19 feature
923 The argument @var{accept-defaults} controls checking for default bindings,
924 as in @code{lookup-key} (above).
925 @end defun
927 @defun global-key-binding key &optional accept-defaults
928 This function returns the binding for command @var{key} in the
929 current global keymap, or @code{nil} if it is undefined there.
931 @c Emacs 19 feature
932 The argument @var{accept-defaults} controls checking for default bindings,
933 as in @code{lookup-key} (above).
934 @end defun
936 @c Emacs 19 feature
937 @defun minor-mode-key-binding key &optional accept-defaults
938 This function returns a list of all the active minor mode bindings of
939 @var{key}.  More precisely, it returns an alist of pairs
940 @code{(@var{modename} . @var{binding})}, where @var{modename} is the
941 variable that enables the minor mode, and @var{binding} is @var{key}'s
942 binding in that mode.  If @var{key} has no minor-mode bindings, the
943 value is @code{nil}.
945 If the first binding found is not a prefix definition (a keymap or a
946 symbol defined as a keymap), all subsequent bindings from other minor
947 modes are omitted, since they would be completely shadowed.  Similarly,
948 the list omits non-prefix bindings that follow prefix bindings.
950 The argument @var{accept-defaults} controls checking for default
951 bindings, as in @code{lookup-key} (above).
952 @end defun
954 @defvar meta-prefix-char
955 @cindex @key{ESC}
956 This variable is the meta-prefix character code.  It is used when
957 translating a meta character to a two-character sequence so it can be
958 looked up in a keymap.  For useful results, the value should be a prefix
959 event (@pxref{Prefix Keys}).  The default value is 27, which is the
960 @sc{ascii} code for @key{ESC}.
962 As long as the value of @code{meta-prefix-char} remains 27, key lookup
963 translates @kbd{M-b} into @kbd{@key{ESC} b}, which is normally defined
964 as the @code{backward-word} command.  However, if you were to set
965 @code{meta-prefix-char} to 24, the code for @kbd{C-x}, then Emacs will
966 translate @kbd{M-b} into @kbd{C-x b}, whose standard binding is the
967 @code{switch-to-buffer} command.  (Don't actually do this!)  Here is an
968 illustration of what would happen:
970 @smallexample
971 @group
972 meta-prefix-char                    ; @r{The default value.}
973      @result{} 27
974 @end group
975 @group
976 (key-binding "\M-b")
977      @result{} backward-word
978 @end group
979 @group
980 ?\C-x                               ; @r{The print representation}
981      @result{} 24                          ;   @r{of a character.}
982 @end group
983 @group
984 (setq meta-prefix-char 24)
985      @result{} 24      
986 @end group
987 @group
988 (key-binding "\M-b")
989      @result{} switch-to-buffer            ; @r{Now, typing @kbd{M-b} is}
990                                     ;   @r{like typing @kbd{C-x b}.}
992 (setq meta-prefix-char 27)          ; @r{Avoid confusion!}
993      @result{} 27                          ; @r{Restore the default value!}
994 @end group
995 @end smallexample
997 This translation of one event into two happens only for characters, not
998 for other kinds of input events.  Thus, @kbd{M-@key{F1}}, a function
999 key, is not converted into @kbd{@key{ESC} @key{F1}}.
1000 @end defvar
1002 @node Changing Key Bindings
1003 @section Changing Key Bindings
1004 @cindex changing key bindings
1005 @cindex rebinding
1007   The way to rebind a key is to change its entry in a keymap.  If you
1008 change a binding in the global keymap, the change is effective in all
1009 buffers (though it has no direct effect in buffers that shadow the
1010 global binding with a local one).  If you change the current buffer's
1011 local map, that usually affects all buffers using the same major mode.
1012 The @code{global-set-key} and @code{local-set-key} functions are
1013 convenient interfaces for these operations (@pxref{Key Binding
1014 Commands}).  You can also use @code{define-key}, a more general
1015 function; then you must specify explicitly the map to change.
1017 @cindex meta character key constants
1018 @cindex control character key constants
1019   In writing the key sequence to rebind, it is good to use the special
1020 escape sequences for control and meta characters (@pxref{String Type}).
1021 The syntax @samp{\C-} means that the following character is a control
1022 character and @samp{\M-} means that the following character is a meta
1023 character.  Thus, the string @code{"\M-x"} is read as containing a
1024 single @kbd{M-x}, @code{"\C-f"} is read as containing a single
1025 @kbd{C-f}, and @code{"\M-\C-x"} and @code{"\C-\M-x"} are both read as
1026 containing a single @kbd{C-M-x}.  You can also use this escape syntax in
1027 vectors, as well as others that aren't allowed in strings; one example
1028 is @samp{[?\C-\H-x home]}.  @xref{Character Type}.
1030   The key definition and lookup functions accept an alternate syntax for
1031 event types in a key sequence that is a vector: you can use a list
1032 containing modifier names plus one base event (a character or function
1033 key name).  For example, @code{(control ?a)} is equivalent to
1034 @code{?\C-a} and @code{(hyper control left)} is equivalent to
1035 @code{C-H-left}.  One advantage of such lists is that the precise
1036 numeric codes for the modifier bits don't appear in compiled files.
1038   For the functions below, an error is signaled if @var{keymap} is not a
1039 keymap or if @var{key} is not a string or vector representing a key
1040 sequence.  You can use event types (symbols) as shorthand for events
1041 that are lists.
1043 @defun define-key keymap key binding
1044 This function sets the binding for @var{key} in @var{keymap}.  (If
1045 @var{key} is more than one event long, the change is actually made
1046 in another keymap reached from @var{keymap}.)  The argument
1047 @var{binding} can be any Lisp object, but only certain types are
1048 meaningful.  (For a list of meaningful types, see @ref{Key Lookup}.)
1049 The value returned by @code{define-key} is @var{binding}.
1051 @cindex invalid prefix key error
1052 @cindex key sequence error
1053 Every prefix of @var{key} must be a prefix key (i.e., bound to a keymap)
1054 or undefined; otherwise an error is signaled.  If some prefix of
1055 @var{key} is undefined, then @code{define-key} defines it as a prefix
1056 key so that the rest of @var{key} can be defined as specified.
1058 If there was previously no binding for @var{key} in @var{keymap}, the
1059 new binding is added at the beginning of @var{keymap}.  The order of
1060 bindings in a keymap makes no difference in most cases, but it does
1061 matter for menu keymaps (@pxref{Menu Keymaps}).
1062 @end defun
1064   Here is an example that creates a sparse keymap and makes a number of
1065 bindings in it:
1067 @smallexample
1068 @group
1069 (setq map (make-sparse-keymap))
1070     @result{} (keymap)
1071 @end group
1072 @group
1073 (define-key map "\C-f" 'forward-char)
1074     @result{} forward-char
1075 @end group
1076 @group
1078     @result{} (keymap (6 . forward-char))
1079 @end group
1081 @group
1082 ;; @r{Build sparse submap for @kbd{C-x} and bind @kbd{f} in that.}
1083 (define-key map "\C-xf" 'forward-word)
1084     @result{} forward-word
1085 @end group
1086 @group
1088 @result{} (keymap 
1089     (24 keymap                ; @kbd{C-x}
1090         (102 . forward-word)) ;      @kbd{f}
1091     (6 . forward-char))       ; @kbd{C-f}
1092 @end group
1094 @group
1095 ;; @r{Bind @kbd{C-p} to the @code{ctl-x-map}.}
1096 (define-key map "\C-p" ctl-x-map)
1097 ;; @code{ctl-x-map}
1098 @result{} [nil @dots{} find-file @dots{} backward-kill-sentence] 
1099 @end group
1101 @group
1102 ;; @r{Bind @kbd{C-f} to @code{foo} in the @code{ctl-x-map}.}
1103 (define-key map "\C-p\C-f" 'foo)
1104 @result{} 'foo
1105 @end group
1106 @group
1108 @result{} (keymap     ; @r{Note @code{foo} in @code{ctl-x-map}.}
1109     (16 keymap [nil @dots{} foo @dots{} backward-kill-sentence])
1110     (24 keymap 
1111         (102 . forward-word))
1112     (6 . forward-char))
1113 @end group
1114 @end smallexample
1116 @noindent
1117 Note that storing a new binding for @kbd{C-p C-f} actually works by
1118 changing an entry in @code{ctl-x-map}, and this has the effect of
1119 changing the bindings of both @kbd{C-p C-f} and @kbd{C-x C-f} in the
1120 default global map.
1122 @defun substitute-key-definition olddef newdef keymap &optional oldmap
1123 @cindex replace bindings
1124 This function replaces @var{olddef} with @var{newdef} for any keys in
1125 @var{keymap} that were bound to @var{olddef}.  In other words,
1126 @var{olddef} is replaced with @var{newdef} wherever it appears.  The
1127 function returns @code{nil}.
1129 For example, this redefines @kbd{C-x C-f}, if you do it in an Emacs with
1130 standard bindings:
1132 @smallexample
1133 @group
1134 (substitute-key-definition 
1135  'find-file 'find-file-read-only (current-global-map))
1136 @end group
1137 @end smallexample
1139 @c Emacs 19 feature
1140 If @var{oldmap} is non-@code{nil}, that changes the behavior of
1141 @code{substitute-key-definition}: the bindings in @var{oldmap} determine
1142 which keys to rebind.  The rebindings still happen in @var{keymap}, not
1143 in @var{oldmap}.  Thus, you can change one map under the control of the
1144 bindings in another.  For example,
1146 @smallexample
1147 (substitute-key-definition
1148   'delete-backward-char 'my-funny-delete
1149   my-map global-map)
1150 @end smallexample
1152 @noindent
1153 puts the special deletion command in @code{my-map} for whichever keys
1154 are globally bound to the standard deletion command.
1156 @ignore
1157 @c Emacs 18 only
1158 Prefix keymaps that appear within @var{keymap} are not checked
1159 recursively for keys bound to @var{olddef}; they are not changed at all.
1160 Perhaps it would be better to check nested keymaps recursively.
1161 @end ignore
1163 Here is an example showing a keymap before and after substitution:
1165 @smallexample
1166 @group
1167 (setq map '(keymap 
1168             (?1 . olddef-1) 
1169             (?2 . olddef-2) 
1170             (?3 . olddef-1)))
1171 @result{} (keymap (49 . olddef-1) (50 . olddef-2) (51 . olddef-1))
1172 @end group
1174 @group
1175 (substitute-key-definition 'olddef-1 'newdef map)
1176 @result{} nil
1177 @end group
1178 @group
1180 @result{} (keymap (49 . newdef) (50 . olddef-2) (51 . newdef))
1181 @end group
1182 @end smallexample
1183 @end defun
1185 @defun suppress-keymap keymap &optional nodigits
1186 @cindex @code{self-insert-command} override
1187 This function changes the contents of the full keymap @var{keymap} by
1188 making all the printing characters undefined.  More precisely, it binds
1189 them to the command @code{undefined}.  This makes ordinary insertion of
1190 text impossible.  @code{suppress-keymap} returns @code{nil}.
1192 If @var{nodigits} is @code{nil}, then @code{suppress-keymap} defines
1193 digits to run @code{digit-argument}, and @kbd{-} to run
1194 @code{negative-argument}.  Otherwise it makes them undefined like the
1195 rest of the printing characters.
1197 @cindex yank suppression 
1198 @cindex @code{quoted-insert} suppression 
1199 The @code{suppress-keymap} function does not make it impossible to
1200 modify a buffer, as it does not suppress commands such as @code{yank}
1201 and @code{quoted-insert}.  To prevent any modification of a buffer, make
1202 it read-only (@pxref{Read Only Buffers}).
1204 Since this function modifies @var{keymap}, you would normally use it
1205 on a newly created keymap.  Operating on an existing keymap
1206 that is used for some other purpose is likely to cause trouble; for
1207 example, suppressing @code{global-map} would make it impossible to use
1208 most of Emacs.
1210 Most often, @code{suppress-keymap} is used to initialize local
1211 keymaps of modes such as Rmail and Dired where insertion of text is not
1212 desirable and the buffer is read-only.  Here is an example taken from
1213 the file @file{emacs/lisp/dired.el}, showing how the local keymap for
1214 Dired mode is set up:
1216 @smallexample
1217 @group
1218 (setq dired-mode-map (make-keymap))
1219 (suppress-keymap dired-mode-map)
1220 (define-key dired-mode-map "r" 'dired-rename-file)
1221 (define-key dired-mode-map "\C-d" 'dired-flag-file-deleted)
1222 (define-key dired-mode-map "d" 'dired-flag-file-deleted)
1223 (define-key dired-mode-map "v" 'dired-view-file)
1224 (define-key dired-mode-map "e" 'dired-find-file)
1225 (define-key dired-mode-map "f" 'dired-find-file)
1226 @dots{}
1227 @end group
1228 @end smallexample
1229 @end defun
1231 @node Key Binding Commands
1232 @section Commands for Binding Keys
1234   This section describes some convenient interactive interfaces for
1235 changing key bindings.  They work by calling @code{define-key}.
1237   People often use @code{global-set-key} in their init files
1238 (@pxref{Init File}) for simple customization.  For example,
1240 @smallexample
1241 (global-set-key "\C-x\C-\\" 'next-line)
1242 @end smallexample
1244 @noindent
1247 @smallexample
1248 (global-set-key [?\C-x ?\C-\\] 'next-line)
1249 @end smallexample
1251 @noindent
1254 @smallexample
1255 (global-set-key [(control ?x) (control ?\\)] 'next-line)
1256 @end smallexample
1258 @noindent
1259 redefines @kbd{C-x C-\} to move down a line.
1261 @smallexample
1262 (global-set-key [M-mouse-1] 'mouse-set-point)
1263 @end smallexample
1265 @noindent
1266 redefines the first (leftmost) mouse button, typed with the Meta key, to
1267 set point where you click.
1269 @cindex non-@sc{ascii} text in keybindings
1270   Be careful when using non-@sc{ascii} text characters in Lisp
1271 specifications of keys to bind.  If these are read as multibyte text, as
1272 they usually will be in a Lisp file (@pxref{Loading Non-ASCII}), you
1273 must type the keys as multibyte too.  For instance, if you use this:
1275 @smallexample
1276 (global-set-key "@"o" 'my-function) ; bind o-umlaut
1277 @end smallexample
1279 @noindent
1282 @smallexample
1283 (global-set-key ?@"o 'my-function) ; bind o-umlaut
1284 @end smallexample
1286 @noindent
1287 and your language environment is multibyte Latin-1, these commands
1288 actually bind the multibyte character with code 2294, not the unibyte
1289 Latin-1 character with code 246 (@kbd{M-v}).  In order to use this
1290 binding, you need to enter the multibyte Latin-1 character as keyboard
1291 input.  One way to do this is by using an appropriate input method
1292 (@pxref{Input Methods, , Input Methods, emacs,The GNU Emacs Manual}).
1294   If you want to use a unibyte character in the key binding, you can
1295 construct the key sequence string using @code{multibyte-char-to-unibyte}
1296 or @code{string-make-unibyte} (@pxref{Converting Representations}).
1298 @deffn Command global-set-key key definition
1299 This function sets the binding of @var{key} in the current global map
1300 to @var{definition}.
1302 @smallexample
1303 @group
1304 (global-set-key @var{key} @var{definition})
1305 @equiv{}
1306 (define-key (current-global-map) @var{key} @var{definition})
1307 @end group
1308 @end smallexample
1309 @end deffn
1311 @deffn Command global-unset-key key
1312 @cindex unbinding keys
1313 This function removes the binding of @var{key} from the current
1314 global map.
1316 One use of this function is in preparation for defining a longer key
1317 that uses @var{key} as a prefix---which would not be allowed if
1318 @var{key} has a non-prefix binding.  For example:
1320 @smallexample
1321 @group
1322 (global-unset-key "\C-l")
1323     @result{} nil
1324 @end group
1325 @group
1326 (global-set-key "\C-l\C-l" 'redraw-display)
1327     @result{} nil
1328 @end group
1329 @end smallexample
1331 This function is implemented simply using @code{define-key}:
1333 @smallexample
1334 @group
1335 (global-unset-key @var{key})
1336 @equiv{}
1337 (define-key (current-global-map) @var{key} nil)
1338 @end group
1339 @end smallexample
1340 @end deffn
1342 @deffn Command local-set-key key definition
1343 This function sets the binding of @var{key} in the current local
1344 keymap to @var{definition}.
1346 @smallexample
1347 @group
1348 (local-set-key @var{key} @var{definition})
1349 @equiv{}
1350 (define-key (current-local-map) @var{key} @var{definition})
1351 @end group
1352 @end smallexample
1353 @end deffn
1355 @deffn Command local-unset-key key
1356 This function removes the binding of @var{key} from the current
1357 local map.
1359 @smallexample
1360 @group
1361 (local-unset-key @var{key})
1362 @equiv{}
1363 (define-key (current-local-map) @var{key} nil)
1364 @end group
1365 @end smallexample
1366 @end deffn
1368 @node Scanning Keymaps
1369 @section Scanning Keymaps
1371   This section describes functions used to scan all the current keymaps
1372 for the sake of printing help information.
1374 @defun accessible-keymaps keymap &optional prefix
1375 This function returns a list of all the keymaps that can be reached (via
1376 zero or more prefix keys) from @var{keymap}.  The value is an
1377 association list with elements of the form @code{(@var{key} .@:
1378 @var{map})}, where @var{key} is a prefix key whose definition in
1379 @var{keymap} is @var{map}.
1381 The elements of the alist are ordered so that the @var{key} increases
1382 in length.  The first element is always @code{("" .@: @var{keymap})},
1383 because the specified keymap is accessible from itself with a prefix of
1384 no events.
1386 If @var{prefix} is given, it should be a prefix key sequence; then
1387 @code{accessible-keymaps} includes only the submaps whose prefixes start
1388 with @var{prefix}.  These elements look just as they do in the value of
1389 @code{(accessible-keymaps)}; the only difference is that some elements
1390 are omitted.
1392 In the example below, the returned alist indicates that the key
1393 @key{ESC}, which is displayed as @samp{^[}, is a prefix key whose
1394 definition is the sparse keymap @code{(keymap (83 .@: center-paragraph)
1395 (115 .@: foo))}.
1397 @smallexample
1398 @group
1399 (accessible-keymaps (current-local-map))
1400 @result{}(("" keymap 
1401       (27 keymap   ; @r{Note this keymap for @key{ESC} is repeated below.}
1402           (83 . center-paragraph)
1403           (115 . center-line))
1404       (9 . tab-to-tab-stop))
1405 @end group
1407 @group
1408    ("^[" keymap 
1409     (83 . center-paragraph) 
1410     (115 . foo)))
1411 @end group
1412 @end smallexample
1414 In the following example, @kbd{C-h} is a prefix key that uses a sparse
1415 keymap starting with @code{(keymap (118 . describe-variable)@dots{})}.
1416 Another prefix, @kbd{C-x 4}, uses a keymap which is also the value of
1417 the variable @code{ctl-x-4-map}.  The event @code{mode-line} is one of
1418 several dummy events used as prefixes for mouse actions in special parts
1419 of a window.
1421 @smallexample
1422 @group
1423 (accessible-keymaps (current-global-map))
1424 @result{} (("" keymap [set-mark-command beginning-of-line @dots{} 
1425                    delete-backward-char])
1426 @end group
1427 @group
1428     ("^H" keymap (118 . describe-variable) @dots{}
1429      (8 . help-for-help))
1430 @end group
1431 @group
1432     ("^X" keymap [x-flush-mouse-queue @dots{}
1433      backward-kill-sentence])
1434 @end group
1435 @group
1436     ("^[" keymap [mark-sexp backward-sexp @dots{}
1437      backward-kill-word])
1438 @end group
1439     ("^X4" keymap (15 . display-buffer) @dots{})
1440 @group
1441     ([mode-line] keymap
1442      (S-mouse-2 . mouse-split-window-horizontally) @dots{}))
1443 @end group
1444 @end smallexample
1446 @noindent
1447 These are not all the keymaps you would see in actuality.
1448 @end defun
1450 @defun where-is-internal command &optional keymap firstonly noindirect
1451 This function is a subroutine used by the @code{where-is} command
1452 (@pxref{Help, , Help, emacs,The GNU Emacs Manual}).  It returns a list
1453 of key sequences (of any length) that are bound to @var{command} in a
1454 set of keymaps.
1456 The argument @var{command} can be any object; it is compared with all
1457 keymap entries using @code{eq}.
1459 If @var{keymap} is @code{nil}, then the maps used are the current active
1460 keymaps, disregarding @code{overriding-local-map} (that is, pretending
1461 its value is @code{nil}).  If @var{keymap} is non-@code{nil}, then the
1462 maps searched are @var{keymap} and the global keymap.
1464 Usually it's best to use @code{overriding-local-map} as the expression
1465 for @var{keymap}.  Then @code{where-is-internal} searches precisely the
1466 keymaps that are active.  To search only the global map, pass
1467 @code{(keymap)} (an empty keymap) as @var{keymap}.
1469 If @var{firstonly} is @code{non-ascii}, then the value is a single
1470 string representing the first key sequence found, rather than a list of
1471 all possible key sequences.  If @var{firstonly} is @code{t}, then the
1472 value is the first key sequence, except that key sequences consisting
1473 entirely of @sc{ascii} characters (or meta variants of @sc{ascii}
1474 characters) are preferred to all other key sequences.
1476 If @var{noindirect} is non-@code{nil}, @code{where-is-internal} doesn't
1477 follow indirect keymap bindings.  This makes it possible to search for
1478 an indirect definition itself.
1480 @smallexample
1481 @group
1482 (where-is-internal 'describe-function)
1483     @result{} ("\^hf" "\^hd")
1484 @end group
1485 @end smallexample
1486 @end defun
1488 @deffn Command describe-bindings &optional prefix
1489 This function creates a listing of all current key bindings, and
1490 displays it in a buffer named @samp{*Help*}.  The text is grouped by
1491 modes---minor modes first, then the major mode, then global bindings.
1493 If @var{prefix} is non-@code{nil}, it should be a prefix key; then the
1494 listing includes only keys that start with @var{prefix}.
1496 The listing describes meta characters as @key{ESC} followed by the
1497 corresponding non-meta character.
1499 When several characters with consecutive @sc{ascii} codes have the
1500 same definition, they are shown together, as
1501 @samp{@var{firstchar}..@var{lastchar}}.  In this instance, you need to
1502 know the @sc{ascii} codes to understand which characters this means.
1503 For example, in the default global map, the characters @samp{@key{SPC}
1504 ..@: ~} are described by a single line.  @key{SPC} is @sc{ascii} 32,
1505 @kbd{~} is @sc{ascii} 126, and the characters between them include all
1506 the normal printing characters, (e.g., letters, digits, punctuation,
1507 etc.@:); all these characters are bound to @code{self-insert-command}.
1508 @end deffn
1510 @node Menu Keymaps
1511 @section Menu Keymaps
1512 @cindex menu keymaps
1514 @c Emacs 19 feature
1515 A keymap can define a menu as well as bindings for keyboard keys and
1516 mouse button.  Menus are usually actuated with the mouse, but they can
1517 work with the keyboard also.
1519 @menu
1520 * Defining Menus::              How to make a keymap that defines a menu.
1521 * Mouse Menus::                 How users actuate the menu with the mouse.
1522 * Keyboard Menus::              How they actuate it with the keyboard.
1523 * Menu Example::                Making a simple menu.
1524 * Menu Bar::                    How to customize the menu bar.
1525 * Tool Bar::                    A tool bar is a row of images.
1526 * Modifying Menus::             How to add new items to a menu.
1527 @end menu
1529 @node Defining Menus
1530 @subsection Defining Menus
1531 @cindex defining menus
1532 @cindex menu prompt string
1533 @cindex prompt string (of menu)
1535 A keymap is suitable for menu use if it has an @dfn{overall prompt
1536 string}, which is a string that appears as an element of the keymap.
1537 (@xref{Format of Keymaps}.)  The string should describe the purpose of
1538 the menu's commands.  Emacs displays the overall prompt string as the
1539 menu title in some cases, depending on the toolkit (if any) used for
1540 displaying menus.@footnote{It is required for menus which do not use a
1541 toolkit, e.g.@: under MS-DOS.}  Keyboard menus also display the overall
1542 prompt string.
1544 The easiest way to construct a keymap with a prompt string is to specify
1545 the string as an argument when you call @code{make-keymap},
1546 @code{make-sparse-keymap} or @code{define-prefix-command}
1547 (@pxref{Creating Keymaps}).
1549 The order of items in the menu is the same as the order of bindings in
1550 the keymap.  Since @code{define-key} puts new bindings at the front, you
1551 should define the menu items starting at the bottom of the menu and
1552 moving to the top, if you care about the order.  When you add an item to
1553 an existing menu, you can specify its position in the menu using
1554 @code{define-key-after} (@pxref{Modifying Menus}).
1556 @menu
1557 * Simple Menu Items::       A simple kind of menu key binding,
1558                               limited in capabilities.
1559 * Extended Menu Items::     More powerful menu item definitions
1560                               let you specify keywords to enable
1561                               various features.
1562 * Menu Separators::         Drawing a horizontal line through a menu.
1563 * Alias Menu Items::        Using command aliases in menu items.
1564 @end menu
1566 @node Simple Menu Items
1567 @subsubsection Simple Menu Items
1569   The simpler and older way to define a menu keymap binding
1570 looks like this:
1572 @example
1573 (@var{item-string} . @var{real-binding})
1574 @end example
1576 @noindent
1577 The @sc{car}, @var{item-string}, is the string to be displayed in the
1578 menu.  It should be short---preferably one to three words.  It should
1579 describe the action of the command it corresponds to.
1581 You can also supply a second string, called the help string, as follows:
1583 @example
1584 (@var{item-string} @var{help} . @var{real-binding})
1585 @end example
1587 @var{help} specifies a ``help-echo'' string to display while the mouse
1588 is on that item in the same way as @code{help-echo} text properties
1589 (@pxref{Help display}).
1591 As far as @code{define-key} is concerned, @var{item-string} and
1592 @var{help-string} are part of the event's binding.  However,
1593 @code{lookup-key} returns just @var{real-binding}, and only
1594 @var{real-binding} is used for executing the key.
1596 If @var{real-binding} is @code{nil}, then @var{item-string} appears in
1597 the menu but cannot be selected.
1599 If @var{real-binding} is a symbol and has a non-@code{nil}
1600 @code{menu-enable} property, that property is an expression that
1601 controls whether the menu item is enabled.  Every time the keymap is
1602 used to display a menu, Emacs evaluates the expression, and it enables
1603 the menu item only if the expression's value is non-@code{nil}.  When a
1604 menu item is disabled, it is displayed in a ``fuzzy'' fashion, and
1605 cannot be selected.
1607 The menu bar does not recalculate which items are enabled every time you
1608 look at a menu.  This is because the X toolkit requires the whole tree
1609 of menus in advance.  To force recalculation of the menu bar, call
1610 @code{force-mode-line-update} (@pxref{Mode Line Format}).
1612 You've probably noticed that menu items show the equivalent keyboard key
1613 sequence (if any) to invoke the same command.  To save time on
1614 recalculation, menu display caches this information in a sublist in the
1615 binding, like this:
1617 @c This line is not too long--rms.
1618 @example
1619 (@var{item-string} @r{[}@var{help-string}@r{]} (@var{key-binding-data}) . @var{real-binding})
1620 @end example
1622 @noindent
1623 Don't put these sublists in the menu item yourself; menu display
1624 calculates them automatically.  Don't mention keyboard equivalents in
1625 the item strings themselves, since that is redundant.
1627 @node Extended Menu Items
1628 @subsubsection Extended Menu Items
1629 @kindex menu-item
1631   An extended-format menu item is a more flexible and also cleaner
1632 alternative to the simple format.  It consists of a list that starts
1633 with the symbol @code{menu-item}.  To define a non-selectable string,
1634 the item looks like this:
1636 @example
1637 (menu-item @var{item-name})
1638 @end example
1640 @noindent
1641 A string starting with two or more dashes specifies a separator line;
1642 see @ref{Menu Separators}.
1644   To define a real menu item which can be selected, the extended format
1645 item looks like this:
1647 @example
1648 (menu-item @var{item-name} @var{real-binding}
1649     . @var{item-property-list})
1650 @end example
1652 @noindent
1653 Here, @var{item-name} is an expression which evaluates to the menu item
1654 string.  Thus, the string need not be a constant.  The third element,
1655 @var{real-binding}, is the command to execute.  The tail of the list,
1656 @var{item-property-list}, has the form of a property list which contains
1657 other information.  Here is a table of the properties that are supported:
1659 @table @code
1660 @item :enable @var{form}
1661 The result of evaluating @var{form} determines whether the item is
1662 enabled (non-@code{nil} means yes).  If the item is not enabled,
1663 you can't really click on it.
1665 @item :visible @var{form}
1666 The result of evaluating @var{form} determines whether the item should
1667 actually appear in the menu (non-@code{nil} means yes).  If the item
1668 does not appear, then the menu is displayed as if this item were
1669 not defined at all.
1671 @item :help @var{help}
1672 The value of this property, @var{help}, specifies a ``help-echo'' string
1673 to display while the mouse is on that item.  This is displayed in the
1674 same way as @code{help-echo} text properties (@pxref{Help display}).
1675 Note that this must be a constant string, unlike the @code{help-echo}
1676 property for text and overlays.
1678 @item :button (@var{type} . @var{selected})
1679 This property provides a way to define radio buttons and toggle buttons.
1680 The @sc{car}, @var{type}, says which: it should be @code{:toggle} or
1681 @code{:radio}.  The @sc{cdr}, @var{selected}, should be a form; the
1682 result of evaluating it says whether this button is currently selected.
1684 A @dfn{toggle} is a menu item which is labeled as either ``on'' or ``off''
1685 according to the value of @var{selected}.  The command itself should
1686 toggle @var{selected}, setting it to @code{t} if it is @code{nil},
1687 and to @code{nil} if it is @code{t}.  Here is how the menu item
1688 to toggle the @code{debug-on-error} flag is defined:
1690 @example
1691 (menu-item "Debug on Error" toggle-debug-on-error
1692            :button (:toggle
1693                     . (and (boundp 'debug-on-error)
1694                            debug-on-error)))
1695 @end example
1697 @noindent
1698 This works because @code{toggle-debug-on-error} is defined as a command
1699 which toggles the variable @code{debug-on-error}.
1701 @dfn{Radio buttons} are a group of menu items, in which at any time one
1702 and only one is ``selected.''  There should be a variable whose value
1703 says which one is selected at any time.  The @var{selected} form for
1704 each radio button in the group should check whether the variable has the
1705 right value for selecting that button.  Clicking on the button should
1706 set the variable so that the button you clicked on becomes selected.
1708 @item :key-sequence @var{key-sequence}
1709 This property specifies which key sequence is likely to be bound to the
1710 same command invoked by this menu item.  If you specify the right key
1711 sequence, that makes preparing the menu for display run much faster.
1713 If you specify the wrong key sequence, it has no effect; before Emacs
1714 displays @var{key-sequence} in the menu, it verifies that
1715 @var{key-sequence} is really equivalent to this menu item.
1717 @item :key-sequence nil
1718 This property indicates that there is normally no key binding which is
1719 equivalent to this menu item.  Using this property saves time in
1720 preparing the menu for display, because Emacs does not need to search
1721 the keymaps for a keyboard equivalent for this menu item.
1723 However, if the user has rebound this item's definition to a key
1724 sequence, Emacs ignores the @code{:keys} property and finds the keyboard
1725 equivalent anyway.
1727 @item :keys @var{string}
1728 This property specifies that @var{string} is the string to display
1729 as the keyboard equivalent for this menu item.  You can use
1730 the @samp{\\[...]} documentation construct in @var{string}.
1732 @item :filter @var{filter-fn}
1733 This property provides a way to compute the menu item dynamically.
1734 The property value @var{filter-fn} should be a function of one argument;
1735 when it is called, its argument will be @var{real-binding}.  The
1736 function should return the binding to use instead.
1737 @end table
1739 @node Menu Separators
1740 @subsubsection Menu Separators
1741 @cindex menu separators
1743   A menu separator is a kind of menu item that doesn't display any
1744 text--instead, it divides the menu into subparts with a horizontal line.
1745 A separator looks like this in the menu keymap:
1747 @example
1748 (menu-item @var{separator-type})
1749 @end example
1751 @noindent
1752 where @var{separator-type} is a string starting with two or more dashes.
1754   In the simplest case, @var{separator-type} consists of only dashes.
1755 That specifies the default kind of separator.  (For compatibility,
1756 @code{""} and @code{-} also count as separators.)
1758   Starting in Emacs 21, certain other values of @var{separator-type}
1759 specify a different style of separator.  Here is a table of them:
1761 @table @code
1762 @item "--no-line"
1763 @itemx "--space"
1764 An extra vertical space, with no actual line.
1766 @item "--single-line"
1767 A single line in the menu's foreground color.
1769 @item "--double-line"
1770 A double line in the menu's foreground color.
1772 @item "--single-dashed-line"
1773 A single dashed line in the menu's foreground color.
1775 @item "--double-dashed-line"
1776 A double dashed line in the menu's foreground color.
1778 @item "--shadow-etched-in"
1779 A single line with a 3D sunken appearance.  This is the default,
1780 used separators consisting of dashes only.
1782 @item "--shadow-etched-out"
1783 A single line with a 3D raised appearance.
1785 @item "--shadow-etched-in-dash"
1786 A single dashed line with a 3D sunken appearance.
1788 @item "--shadow-etched-out-dash"
1789 A single dashed line with a 3D raised appearance.
1791 @item "--shadow-double-etched-in"
1792 Two lines with a 3D sunken appearance.
1794 @item "--shadow-double-etched-out"
1795 Two lines with a 3D raised appearance.
1797 @item "--shadow-double-etched-in-dash"
1798 Two dashed lines with a 3D sunken appearance.
1800 @item "--shadow-double-etched-out-dash"
1801 Two dashed lines with a 3D raised appearance.
1802 @end table
1804   You can also give these names in another style, adding a colon after
1805 the double-dash and replacing each single dash with capitalization of
1806 the following word.  Thus, @code{"--:singleLine"}, is equivalent to
1807 @code{"--single-line"}.
1809   Some systems and display toolkits don't really handle all of these
1810 separator types.  If you use a type that isn't supported, the menu
1811 displays a similar kind of separator that is supported.
1813 @node Alias Menu Items
1814 @subsubsection Alias Menu Items
1816   Sometimes it is useful to make menu items that use the ``same''
1817 command but with different enable conditions.  The best way to do this
1818 in Emacs now is with extended menu items; before that feature existed,
1819 it could be done by defining alias commands and using them in menu
1820 items.  Here's an example that makes two aliases for
1821 @code{toggle-read-only} and gives them different enable conditions:
1823 @example
1824 (defalias 'make-read-only 'toggle-read-only)
1825 (put 'make-read-only 'menu-enable '(not buffer-read-only))
1826 (defalias 'make-writable 'toggle-read-only)
1827 (put 'make-writable 'menu-enable 'buffer-read-only)
1828 @end example
1830 When using aliases in menus, often it is useful to display the
1831 equivalent key bindings for the ``real'' command name, not the aliases
1832 (which typically don't have any key bindings except for the menu
1833 itself).  To request this, give the alias symbol a non-@code{nil}
1834 @code{menu-alias} property.  Thus,
1836 @example
1837 (put 'make-read-only 'menu-alias t)
1838 (put 'make-writable 'menu-alias t)
1839 @end example
1841 @noindent
1842 causes menu items for @code{make-read-only} and @code{make-writable} to
1843 show the keyboard bindings for @code{toggle-read-only}.
1845 @node Mouse Menus
1846 @subsection Menus and the Mouse
1848   The usual way to make a menu keymap produce a menu is to make it the
1849 definition of a prefix key.  (A Lisp program can explicitly pop up a
1850 menu and receive the user's choice---see @ref{Pop-Up Menus}.)
1852   If the prefix key ends with a mouse event, Emacs handles the menu keymap
1853 by popping up a visible menu, so that the user can select a choice with
1854 the mouse.  When the user clicks on a menu item, the event generated is
1855 whatever character or symbol has the binding that brought about that
1856 menu item.  (A menu item may generate a series of events if the menu has
1857 multiple levels or comes from the menu bar.)
1859   It's often best to use a button-down event to trigger the menu.  Then
1860 the user can select a menu item by releasing the button.
1862   A single keymap can appear as multiple menu panes, if you explicitly
1863 arrange for this.  The way to do this is to make a keymap for each pane,
1864 then create a binding for each of those maps in the main keymap of the
1865 menu.  Give each of these bindings an item string that starts with
1866 @samp{@@}.  The rest of the item string becomes the name of the pane.
1867 See the file @file{lisp/mouse.el} for an example of this.  Any ordinary
1868 bindings with @samp{@@}-less item strings are grouped into one pane,
1869 which appears along with the other panes explicitly created for the
1870 submaps.
1872   X toolkit menus don't have panes; instead, they can have submenus.
1873 Every nested keymap becomes a submenu, whether the item string starts
1874 with @samp{@@} or not.  In a toolkit version of Emacs, the only thing
1875 special about @samp{@@} at the beginning of an item string is that the
1876 @samp{@@} doesn't appear in the menu item.
1878   You can also produce multiple panes or submenus from separate keymaps.
1879 The full definition of a prefix key always comes from merging the
1880 definitions supplied by the various active keymaps (minor mode, local,
1881 and global).  When more than one of these keymaps is a menu, each of
1882 them makes a separate pane or panes (when Emacs does not use an
1883 X-toolkit) or a separate submenu (when using an X-toolkit).
1884 @xref{Active Keymaps}.
1886 @node Keyboard Menus
1887 @subsection Menus and the Keyboard
1889 When a prefix key ending with a keyboard event (a character or function
1890 key) has a definition that is a menu keymap, the user can use the
1891 keyboard to choose a menu item.
1893 Emacs displays the menu's overall prompt string followed by the
1894 alternatives (the item strings of the bindings) in the echo area.  If
1895 the bindings don't all fit at once, the user can type @key{SPC} to see
1896 the next line of alternatives.  Successive uses of @key{SPC} eventually
1897 get to the end of the menu and then cycle around to the beginning.  (The
1898 variable @code{menu-prompt-more-char} specifies which character is used
1899 for this; @key{SPC} is the default.)
1901 When the user has found the desired alternative from the menu, he or she
1902 should type the corresponding character---the one whose binding is that
1903 alternative.
1905 @ignore
1906 In a menu intended for keyboard use, each menu item must clearly
1907 indicate what character to type.  The best convention to use is to make
1908 the character the first letter of the item string---that is something
1909 users will understand without being told.  We plan to change this; by
1910 the time you read this manual, keyboard menus may explicitly name the
1911 key for each alternative.
1912 @end ignore
1914 This way of using menus in an Emacs-like editor was inspired by the
1915 Hierarkey system.
1917 @defvar menu-prompt-more-char
1918 This variable specifies the character to use to ask to see
1919 the next line of a menu.  Its initial value is 32, the code
1920 for @key{SPC}.
1921 @end defvar
1923 @node Menu Example
1924 @subsection Menu Example
1925 @cindex menu definition example
1927   Here is a complete example of defining a menu keymap.  It is the
1928 definition of the @samp{Print} submenu in the @samp{Tools} menu in the
1929 menu bar, and it uses the simple menu item format (@pxref{Simple Menu
1930 Items}).  First we create the keymap, and give it a name:
1932 @example
1933 (defvar menu-bar-print-menu (make-sparse-keymap "Print"))
1934 @end example
1936 @noindent
1937 Next we define the menu items:
1939 @example
1940 (define-key menu-bar-print-menu [ps-print-region]
1941   '("Postscript Print Region" . ps-print-region-with-faces))
1942 (define-key menu-bar-print-menu [ps-print-buffer]
1943   '("Postscript Print Buffer" . ps-print-buffer-with-faces))
1944 (define-key menu-bar-print-menu [separator-ps-print]
1945   '("--"))
1946 (define-key menu-bar-print-menu [print-region]
1947   '("Print Region" . print-region))
1948 (define-key menu-bar-print-menu [print-buffer]
1949   '("Print Buffer" . print-buffer))
1950 @end example
1952 @noindent
1953 Note the symbols which the bindings are ``made for''; these appear
1954 inside square brackets, in the key sequence being defined.  In some
1955 cases, this symbol is the same as the command name; sometimes it is
1956 different.  These symbols are treated as ``function keys'', but they are
1957 not real function keys on the keyboard.  They do not affect the
1958 functioning of the menu itself, but they are ``echoed'' in the echo area
1959 when the user selects from the menu, and they appear in the output of
1960 @code{where-is} and @code{apropos}.
1962   The binding whose definition is @code{("--")} is a separator line.
1963 Like a real menu item, the separator has a key symbol, in this case
1964 @code{separator-ps-print}.  If one menu has two separators, they must
1965 have two different key symbols.
1967   Here is code to define enable conditions for two of the commands in
1968 the menu:
1970 @example
1971 (put 'print-region 'menu-enable 'mark-active)
1972 (put 'ps-print-region-with-faces 'menu-enable 'mark-active)
1973 @end example
1975   Here is how we make this menu appear as an item in the parent menu:
1977 @example
1978 (define-key menu-bar-tools-menu [print]
1979   (cons "Print" menu-bar-print-menu))
1980 @end example
1982 @noindent
1983 Note that this incorporates the submenu keymap, which is the value of
1984 the variable @code{menu-bar-print-menu}, rather than the symbol
1985 @code{menu-bar-print-menu} itself.  Using that symbol in the parent menu
1986 item would be meaningless because @code{menu-bar-print-menu} is not a
1987 command.
1989   If you wanted to attach the same print menu to a mouse click, you
1990 can do it this way:
1992 @example
1993 (define-key global-map [C-S-down-mouse-1]
1994    menu-bar-print-menu)
1995 @end example
1997   We could equally well use an extended menu item (@pxref{Extended Menu
1998 Items}) for @code{print-region}, like this:
2000 @example
2001 (define-key menu-bar-print-menu [print-region]
2002   '(menu-item "Print Region" print-region
2003               :enable mark-active))
2004 @end example
2006 @noindent
2007 With the extended menu item, the enable condition is specified
2008 inside the menu item itself.  If we wanted to make this
2009 item disappear from the menu entirely when the mark is inactive,
2010 we could do it this way:
2012 @example
2013 (define-key menu-bar-print-menu [print-region]
2014   '(menu-item "Print Region" print-region
2015               :visible mark-active))
2016 @end example
2018 @node Menu Bar
2019 @subsection The Menu Bar
2020 @cindex menu bar
2022   Most window systems allow each frame to have a @dfn{menu bar}---a
2023 permanently displayed menu stretching horizontally across the top of the
2024 frame.  The items of the menu bar are the subcommands of the fake
2025 ``function key'' @code{menu-bar}, as defined by all the active keymaps.
2027   To add an item to the menu bar, invent a fake ``function key'' of your
2028 own (let's call it @var{key}), and make a binding for the key sequence
2029 @code{[menu-bar @var{key}]}.  Most often, the binding is a menu keymap,
2030 so that pressing a button on the menu bar item leads to another menu.
2032   When more than one active keymap defines the same fake function key
2033 for the menu bar, the item appears just once.  If the user clicks on
2034 that menu bar item, it brings up a single, combined menu containing
2035 all the subcommands of that item---the global subcommands, the local
2036 subcommands, and the minor mode subcommands.
2038   The variable @code{overriding-local-map} is normally ignored when
2039 determining the menu bar contents.  That is, the menu bar is computed
2040 from the keymaps that would be active if @code{overriding-local-map}
2041 were @code{nil}.  @xref{Active Keymaps}.
2043   In order for a frame to display a menu bar, its @code{menu-bar-lines}
2044 parameter must be greater than zero.  Emacs uses just one line for the
2045 menu bar itself; if you specify more than one line, the other lines
2046 serve to separate the menu bar from the windows in the frame.  We
2047 recommend 1 or 2 as the value of @code{menu-bar-lines}.  @xref{Window Frame
2048 Parameters}.
2050   Here's an example of setting up a menu bar item:
2052 @example
2053 @group
2054 (modify-frame-parameters (selected-frame)
2055                          '((menu-bar-lines . 2)))
2056 @end group
2058 @group
2059 ;; @r{Make a menu keymap (with a prompt string)}
2060 ;; @r{and make it the menu bar item's definition.}
2061 (define-key global-map [menu-bar words]
2062   (cons "Words" (make-sparse-keymap "Words")))
2063 @end group
2065 @group
2066 ;; @r{Define specific subcommands in this menu.}
2067 (define-key global-map
2068   [menu-bar words forward]
2069   '("Forward word" . forward-word))
2070 @end group
2071 @group
2072 (define-key global-map
2073   [menu-bar words backward]
2074   '("Backward word" . backward-word))
2075 @end group
2076 @end example
2078   A local keymap can cancel a menu bar item made by the global keymap by
2079 rebinding the same fake function key with @code{undefined} as the
2080 binding.  For example, this is how Dired suppresses the @samp{Edit} menu
2081 bar item:
2083 @example
2084 (define-key dired-mode-map [menu-bar edit] 'undefined)
2085 @end example
2087 @noindent
2088 @code{edit} is the fake function key used by the global map for the
2089 @samp{Edit} menu bar item.  The main reason to suppress a global
2090 menu bar item is to regain space for mode-specific items.
2092 @defvar menu-bar-final-items
2093 Normally the menu bar shows global items followed by items defined by the
2094 local maps.
2096 This variable holds a list of fake function keys for items to display at
2097 the end of the menu bar rather than in normal sequence.  The default
2098 value is @code{(help-menu)}; thus, the @samp{Help} menu item normally appears
2099 at the end of the menu bar, following local menu items.
2100 @end defvar
2102 @defvar menu-bar-update-hook
2103 This normal hook is run whenever the user clicks on the menu bar, before
2104 displaying a submenu.  You can use it to update submenus whose contents
2105 should vary.
2106 @end defvar
2108 @node Tool Bar
2109 @subsection Tool bars
2110 @cindex tool bar
2112   A @dfn{tool bar} is a row of icons at the top of a frame, that execute
2113 commands when you click on them---in effect, a kind of graphical menu
2114 bar.  Emacs supports tool bars starting with version 21.
2116   The frame parameter @code{tool-bar-lines} (X resource @samp{toolBar})
2117 controls how many lines' worth of height to reserve for the tool bar.  A
2118 zero value suppresses the tool bar.  If the value is nonzero, and
2119 @code{auto-resize-tool-bars} is non-@code{nil}, the tool bar expands and
2120 contracts automatically as needed to hold the specified contents.
2122   The tool bar contents are controlled by a menu keymap attached to a
2123 fake ``function key'' called @code{tool-bar} (much like the way the menu
2124 bar is controlled).  So you define a tool bar item using
2125 @code{define-key}, like this:
2127 @example
2128 (define-key global-map [tool-bar @var{key}] @var{item})
2129 @end example
2131 @noindent
2132 where @var{key} is a fake ``function key'' to distinguish this item from
2133 other items, and @var{item} is a menu item key binding (@pxref{Extended
2134 Menu Items}), which says how to display this item and how it behaves.
2136   The usual menu keymap item properties, @code{:visible},
2137 @code{:enable}, @code{:button}, and @code{:filter}, are useful in
2138 tool bar bindings and have their normal meanings.  The @var{real-binding}
2139 in the item must be a command, not a keymap; in other words, it does not
2140 work to define a tool bar icon as a prefix key.
2142   The @code{:help} property specifies a ``help-echo'' string to display
2143 while the mouse is on that item.  This is displayed in the same way as
2144 @code{help-echo} text properties (@pxref{Help display}).
2146   In addition, you should use the @code{:image} property;
2147 this is how you specify the image to display in the tool bar:
2149 @table @code
2150 @item :image @var{image}
2151 @var{images} is either a single image specification or a vector of four
2152 image specifications.  If you use a vector of four,
2153 one of them is used, depending on circumstances:
2155 @table @asis
2156 @item item 0
2157 Used when the item is enabled and selected.
2158 @item item 1
2159 Used when the item is enabled and deselected.
2160 @item item 2
2161 Used when the item is disabled and selected.
2162 @item item 3
2163 Used when the item is disabled and deselected.
2164 @end table
2165 @end table
2167 If @var{image} is a single image specification, Emacs draws the tool bar
2168 button in disabled state by applying an edge-detection algorithm to the
2169 image.
2171 The default tool bar is defined so that items specific to editing do not
2172 appear for major modes whose command symbol has a @code{mode-class}
2173 property of @code{special} (@pxref{Major Mode Conventions}).  Major
2174 modes may add items to the global bar by binding @code{[tool-bar
2175 @var{foo}]} in their local map.  It makes sense for some major modes to
2176 replace the default tool bar items completely, since not many can be
2177 accommodated conveniently, and the default bindings make this easy by
2178 using an indirection through @code{tool-bar-map}.
2180 @defvar tool-bar-map
2181 @tindex tool-bar-map
2182 By default, the global map binds @code{[tool-bar]} as follows:
2183 @example
2184 (global-set-key [tool-bar]
2185                 '(menu-item "tool bar" ignore
2186                             :filter (lambda (ignore) tool-bar-map)))
2187 @end example
2188 @noindent
2189 Thus the tool bar map is derived dynamically from the value of variable
2190 @code{tool-bar-map} and you should normally adjust the default (global)
2191 tool bar by changing that map.  Major modes may replace the global bar
2192 completely by making @code{tool-bar-map} buffer-local and set to a
2193 keymap containing only the desired items.  Info mode provides an
2194 example.
2195 @end defvar
2197 There are two convenience functions for defining tool bar items, as
2198 follows.
2200 @defun tool-bar-add-item icon def key &rest props
2201 @tindex tool-bar-add-item
2202 This function adds an item to the tool bar by modifying
2203 @code{tool-bar-map}.  The image to use is defined by @var{icon}, which
2204 is the base name of an XPM, XBM or PBM image file to located by
2205 @code{find-image}.  Given a value @samp{"exit"}, say, @file{exit.xpm},
2206 @file{exit.pbm} and @file{exit.xbm} would be searched for in that order
2207 on a color display.  On a monochrome display, the search order is
2208 @samp{.pbm}, @samp{.xbm} and @samp{.xpm}.  The binding to use is the
2209 command @var{def}, and @var{key} is the fake function key symbol in the
2210 prefix keymap.  The remaining arguments @var{props} are additional
2211 property list elements to add to the menu item specification.
2213 To define items in some local map, bind @code{`tool-bar-map} with
2214 @code{let} around calls of this function:
2215 @example
2216 (defvar foo-tool-bar-map 
2217   (let ((tool-bar-map (make-sparse-keymap)))
2218     (tool-bar-add-item @dots{})
2219     @dots{}
2220     tool-bar-map))
2221 @end example
2222 @end defun
2224 @defun tool-bar-add-item-from-menu command icon &optional map &rest props
2225 @tindex tool-bar-add-item-from-menu
2226 This command is a convenience for defining tool bar items which are
2227 consistent with existing menu bar bindings.  The binding of
2228 @var{command} is looked up in the menu bar in @var{map} (default
2229 @code{global-map}) and modified to add an image specification for
2230 @var{icon}, which is looked for in the same way as by
2231 @code{tool-bar-add-item}.  The resulting binding is then placed in
2232 @code{tool-bar-map}.  @var{map} must contain an appropriate keymap bound
2233 to @code{[menu-bar]}.  The remaining arguments @var{props} are
2234 additional property list elements to add to the menu item specification.
2235 @end defun
2237 @tindex auto-resize-tool-bar
2238 @defvar auto-resize-tool-bar
2239 If this variable is non-@code{nil}, the tool bar automatically resizes to
2240 show all defined tool bar items---but not larger than a quarter of the
2241 frame's height.
2242 @end defvar
2244 @tindex auto-raise-tool-bar-items
2245 @defvar auto-raise-tool-bar-items
2246 If this variable is non-@code{nil}, tool bar items display
2247 in raised form when the mouse moves over them.
2248 @end defvar
2250 @tindex tool-bar-item-margin
2251 @defvar tool-bar-item-margin
2252 This variable specifies an extra margin to add around tool bar items.
2253 The value is an integer, a number of pixels.  The default is 1.
2254 @end defvar
2256 @tindex tool-bar-item-relief
2257 @defvar tool-bar-item-relief
2258 This variable specifies the shadow width for tool bar items.
2259 The value is an integer, a number of pixels.  The default is 3.
2260 @end defvar
2262   You can define a special meaning for clicking on a tool bar item with
2263 the shift, control, meta, etc., modifiers.  You do this by setting up
2264 additional items that relate to the original item through the fake
2265 function keys.  Specifically, the additional items should use the
2266 modified versions of the same fake function key used to name the
2267 original item.
2269   Thus, if the original item was defined this way,
2271 @example
2272 (define-key global-map [tool-bar shell]
2273   '(menu-item "Shell" shell
2274               :image (image :type xpm :file "shell.xpm")))
2275 @end example
2277 @noindent
2278 then here is how you can define clicking on the same tool bar image with
2279 the shift modifier:
2281 @example
2282 (define-key global-map [tool-bar S-shell] 'some-command)
2283 @end example
2285 @xref{Function Keys}, for more information about how to add modifiers to
2286 function keys.
2288 @node Modifying Menus
2289 @subsection Modifying Menus
2291   When you insert a new item in an existing menu, you probably want to
2292 put it in a particular place among the menu's existing items.  If you
2293 use @code{define-key} to add the item, it normally goes at the front of
2294 the menu.  To put it elsewhere in the menu, use @code{define-key-after}:
2296 @defun define-key-after map key binding &optional after
2297 Define a binding in @var{map} for @var{key}, with value @var{binding},
2298 just like @code{define-key}, but position the binding in @var{map} after
2299 the binding for the event @var{after}.  The argument @var{key} should be
2300 of length one---a vector or string with just one element.  But
2301 @var{after} should be a single event type---a symbol or a character, not
2302 a sequence.  The new binding goes after the binding for @var{after}.  If
2303 @var{after} is @code{t} or is omitted, then the new binding goes last, at
2304 the end of the keymap.  However, new bindings are added before any
2305 inherited keymap.
2307 Here is an example:
2309 @example
2310 (define-key-after my-menu [drink]
2311   '("Drink" . drink-command) 'eat)
2312 @end example
2314 @noindent
2315 makes a binding for the fake function key @key{DRINK} and puts it
2316 right after the binding for @key{EAT}.
2318 Here is how to insert an item called @samp{Work} in the @samp{Signals}
2319 menu of Shell mode, after the item @code{break}:
2321 @example
2322 (define-key-after
2323   (lookup-key shell-mode-map [menu-bar signals])
2324   [work] '("Work" . work-command) 'break)
2325 @end example
2326 @end defun