(Command Loop Info): Explain how read-event affects this-command-keys.
[bpt/emacs.git] / lispref / commands.texi
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2002, 2003,
4 @c 2004, 2005, 2006 Free Software Foundation, Inc.
5 @c See the file elisp.texi for copying conditions.
6 @setfilename ../info/commands
7 @node Command Loop, Keymaps, Minibuffers, Top
8 @chapter Command Loop
9 @cindex editor command loop
10 @cindex command loop
11
12 When you run Emacs, it enters the @dfn{editor command loop} almost
13 immediately. This loop reads key sequences, executes their definitions,
14 and displays the results. In this chapter, we describe how these things
15 are done, and the subroutines that allow Lisp programs to do them.
16
17 @menu
18 * Command Overview:: How the command loop reads commands.
19 * Defining Commands:: Specifying how a function should read arguments.
20 * Interactive Call:: Calling a command, so that it will read arguments.
21 * Command Loop Info:: Variables set by the command loop for you to examine.
22 * Adjusting Point:: Adjustment of point after a command.
23 * Input Events:: What input looks like when you read it.
24 * Reading Input:: How to read input events from the keyboard or mouse.
25 * Special Events:: Events processed immediately and individually.
26 * Waiting:: Waiting for user input or elapsed time.
27 * Quitting:: How @kbd{C-g} works. How to catch or defer quitting.
28 * Prefix Command Arguments:: How the commands to set prefix args work.
29 * Recursive Editing:: Entering a recursive edit,
30 and why you usually shouldn't.
31 * Disabling Commands:: How the command loop handles disabled commands.
32 * Command History:: How the command history is set up, and how accessed.
33 * Keyboard Macros:: How keyboard macros are implemented.
34 @end menu
35
36 @node Command Overview
37 @section Command Loop Overview
38
39 The first thing the command loop must do is read a key sequence, which
40 is a sequence of events that translates into a command. It does this by
41 calling the function @code{read-key-sequence}. Your Lisp code can also
42 call this function (@pxref{Key Sequence Input}). Lisp programs can also
43 do input at a lower level with @code{read-event} (@pxref{Reading One
44 Event}) or discard pending input with @code{discard-input}
45 (@pxref{Event Input Misc}).
46
47 The key sequence is translated into a command through the currently
48 active keymaps. @xref{Key Lookup}, for information on how this is done.
49 The result should be a keyboard macro or an interactively callable
50 function. If the key is @kbd{M-x}, then it reads the name of another
51 command, which it then calls. This is done by the command
52 @code{execute-extended-command} (@pxref{Interactive Call}).
53
54 To execute a command requires first reading the arguments for it.
55 This is done by calling @code{command-execute} (@pxref{Interactive
56 Call}). For commands written in Lisp, the @code{interactive}
57 specification says how to read the arguments. This may use the prefix
58 argument (@pxref{Prefix Command Arguments}) or may read with prompting
59 in the minibuffer (@pxref{Minibuffers}). For example, the command
60 @code{find-file} has an @code{interactive} specification which says to
61 read a file name using the minibuffer. The command's function body does
62 not use the minibuffer; if you call this command from Lisp code as a
63 function, you must supply the file name string as an ordinary Lisp
64 function argument.
65
66 If the command is a string or vector (i.e., a keyboard macro) then
67 @code{execute-kbd-macro} is used to execute it. You can call this
68 function yourself (@pxref{Keyboard Macros}).
69
70 To terminate the execution of a running command, type @kbd{C-g}. This
71 character causes @dfn{quitting} (@pxref{Quitting}).
72
73 @defvar pre-command-hook
74 The editor command loop runs this normal hook before each command. At
75 that time, @code{this-command} contains the command that is about to
76 run, and @code{last-command} describes the previous command.
77 @xref{Command Loop Info}.
78 @end defvar
79
80 @defvar post-command-hook
81 The editor command loop runs this normal hook after each command
82 (including commands terminated prematurely by quitting or by errors),
83 and also when the command loop is first entered. At that time,
84 @code{this-command} refers to the command that just ran, and
85 @code{last-command} refers to the command before that.
86 @end defvar
87
88 Quitting is suppressed while running @code{pre-command-hook} and
89 @code{post-command-hook}. If an error happens while executing one of
90 these hooks, it terminates execution of the hook, and clears the hook
91 variable to @code{nil} so as to prevent an infinite loop of errors.
92
93 A request coming into the Emacs server (@pxref{Emacs Server,,,
94 emacs, The GNU Emacs Manual}) runs these two hooks just as a keyboard
95 command does.
96
97 @node Defining Commands
98 @section Defining Commands
99 @cindex defining commands
100 @cindex commands, defining
101 @cindex functions, making them interactive
102 @cindex interactive function
103
104 A Lisp function becomes a command when its body contains, at top
105 level, a form that calls the special form @code{interactive}. This
106 form does nothing when actually executed, but its presence serves as a
107 flag to indicate that interactive calling is permitted. Its argument
108 controls the reading of arguments for an interactive call.
109
110 @menu
111 * Using Interactive:: General rules for @code{interactive}.
112 * Interactive Codes:: The standard letter-codes for reading arguments
113 in various ways.
114 * Interactive Examples:: Examples of how to read interactive arguments.
115 @end menu
116
117 @node Using Interactive
118 @subsection Using @code{interactive}
119
120 This section describes how to write the @code{interactive} form that
121 makes a Lisp function an interactively-callable command, and how to
122 examine a command's @code{interactive} form.
123
124 @defspec interactive arg-descriptor
125 @cindex argument descriptors
126 This special form declares that the function in which it appears is a
127 command, and that it may therefore be called interactively (via
128 @kbd{M-x} or by entering a key sequence bound to it). The argument
129 @var{arg-descriptor} declares how to compute the arguments to the
130 command when the command is called interactively.
131
132 A command may be called from Lisp programs like any other function, but
133 then the caller supplies the arguments and @var{arg-descriptor} has no
134 effect.
135
136 The @code{interactive} form has its effect because the command loop
137 (actually, its subroutine @code{call-interactively}) scans through the
138 function definition looking for it, before calling the function. Once
139 the function is called, all its body forms including the
140 @code{interactive} form are executed, but at this time
141 @code{interactive} simply returns @code{nil} without even evaluating its
142 argument.
143 @end defspec
144
145 There are three possibilities for the argument @var{arg-descriptor}:
146
147 @itemize @bullet
148 @item
149 It may be omitted or @code{nil}; then the command is called with no
150 arguments. This leads quickly to an error if the command requires one
151 or more arguments.
152
153 @item
154 @cindex argument prompt
155 It may be a string; then its contents should consist of a code character
156 followed by a prompt (which some code characters use and some ignore).
157 The prompt ends either with the end of the string or with a newline.
158 Here is a simple example:
159
160 @smallexample
161 (interactive "bFrobnicate buffer: ")
162 @end smallexample
163
164 @noindent
165 The code letter @samp{b} says to read the name of an existing buffer,
166 with completion. The buffer name is the sole argument passed to the
167 command. The rest of the string is a prompt.
168
169 If there is a newline character in the string, it terminates the prompt.
170 If the string does not end there, then the rest of the string should
171 contain another code character and prompt, specifying another argument.
172 You can specify any number of arguments in this way.
173
174 @c Emacs 19 feature
175 The prompt string can use @samp{%} to include previous argument values
176 (starting with the first argument) in the prompt. This is done using
177 @code{format} (@pxref{Formatting Strings}). For example, here is how
178 you could read the name of an existing buffer followed by a new name to
179 give to that buffer:
180
181 @smallexample
182 @group
183 (interactive "bBuffer to rename: \nsRename buffer %s to: ")
184 @end group
185 @end smallexample
186
187 @cindex @samp{*} in @code{interactive}
188 @cindex read-only buffers in interactive
189 If the first character in the string is @samp{*}, then an error is
190 signaled if the buffer is read-only.
191
192 @cindex @samp{@@} in @code{interactive}
193 @c Emacs 19 feature
194 If the first character in the string is @samp{@@}, and if the key
195 sequence used to invoke the command includes any mouse events, then
196 the window associated with the first of those events is selected
197 before the command is run.
198
199 You can use @samp{*} and @samp{@@} together; the order does not matter.
200 Actual reading of arguments is controlled by the rest of the prompt
201 string (starting with the first character that is not @samp{*} or
202 @samp{@@}).
203
204 @item
205 It may be a Lisp expression that is not a string; then it should be a
206 form that is evaluated to get a list of arguments to pass to the
207 command. Usually this form will call various functions to read input
208 from the user, most often through the minibuffer (@pxref{Minibuffers})
209 or directly from the keyboard (@pxref{Reading Input}).
210 @cindex argument evaluation form
211
212 Providing point or the mark as an argument value is also common, but
213 if you do this @emph{and} read input (whether using the minibuffer or
214 not), be sure to get the integer values of point or the mark after
215 reading. The current buffer may be receiving subprocess output; if
216 subprocess output arrives while the command is waiting for input, it
217 could relocate point and the mark.
218
219 Here's an example of what @emph{not} to do:
220
221 @smallexample
222 (interactive
223 (list (region-beginning) (region-end)
224 (read-string "Foo: " nil 'my-history)))
225 @end smallexample
226
227 @noindent
228 Here's how to avoid the problem, by examining point and the mark after
229 reading the keyboard input:
230
231 @smallexample
232 (interactive
233 (let ((string (read-string "Foo: " nil 'my-history)))
234 (list (region-beginning) (region-end) string)))
235 @end smallexample
236
237 @strong{Warning:} the argument values should not include any data
238 types that can't be printed and then read. Some facilities save
239 @code{command-history} in a file to be read in the subsequent
240 sessions; if a command's arguments contain a data type that prints
241 using @samp{#<@dots{}>} syntax, those facilities won't work.
242
243 There are, however, a few exceptions: it is ok to use a limited set of
244 expressions such as @code{(point)}, @code{(mark)},
245 @code{(region-beginning)}, and @code{(region-end)}, because Emacs
246 recognizes them specially and puts the expression (rather than its
247 value) into the command history. To see whether the expression you
248 wrote is one of these exceptions, run the command, then examine
249 @code{(car command-history)}.
250 @end itemize
251
252 @cindex examining the @code{interactive} form
253 @defun interactive-form function
254 This function returns the @code{interactive} form of @var{function}.
255 If @var{function} is an interactively callable function
256 (@pxref{Interactive Call}), the value is the command's
257 @code{interactive} form @code{(interactive @var{spec})}, which
258 specifies how to compute its arguments. Otherwise, the value is
259 @code{nil}. If @var{function} is a symbol, its function definition is
260 used.
261 @end defun
262
263 @node Interactive Codes
264 @comment node-name, next, previous, up
265 @subsection Code Characters for @code{interactive}
266 @cindex interactive code description
267 @cindex description for interactive codes
268 @cindex codes, interactive, description of
269 @cindex characters for interactive codes
270
271 The code character descriptions below contain a number of key words,
272 defined here as follows:
273
274 @table @b
275 @item Completion
276 @cindex interactive completion
277 Provide completion. @key{TAB}, @key{SPC}, and @key{RET} perform name
278 completion because the argument is read using @code{completing-read}
279 (@pxref{Completion}). @kbd{?} displays a list of possible completions.
280
281 @item Existing
282 Require the name of an existing object. An invalid name is not
283 accepted; the commands to exit the minibuffer do not exit if the current
284 input is not valid.
285
286 @item Default
287 @cindex default argument string
288 A default value of some sort is used if the user enters no text in the
289 minibuffer. The default depends on the code character.
290
291 @item No I/O
292 This code letter computes an argument without reading any input.
293 Therefore, it does not use a prompt string, and any prompt string you
294 supply is ignored.
295
296 Even though the code letter doesn't use a prompt string, you must follow
297 it with a newline if it is not the last code character in the string.
298
299 @item Prompt
300 A prompt immediately follows the code character. The prompt ends either
301 with the end of the string or with a newline.
302
303 @item Special
304 This code character is meaningful only at the beginning of the
305 interactive string, and it does not look for a prompt or a newline.
306 It is a single, isolated character.
307 @end table
308
309 @cindex reading interactive arguments
310 Here are the code character descriptions for use with @code{interactive}:
311
312 @table @samp
313 @item *
314 Signal an error if the current buffer is read-only. Special.
315
316 @item @@
317 Select the window mentioned in the first mouse event in the key
318 sequence that invoked this command. Special.
319
320 @item a
321 A function name (i.e., a symbol satisfying @code{fboundp}). Existing,
322 Completion, Prompt.
323
324 @item b
325 The name of an existing buffer. By default, uses the name of the
326 current buffer (@pxref{Buffers}). Existing, Completion, Default,
327 Prompt.
328
329 @item B
330 A buffer name. The buffer need not exist. By default, uses the name of
331 a recently used buffer other than the current buffer. Completion,
332 Default, Prompt.
333
334 @item c
335 A character. The cursor does not move into the echo area. Prompt.
336
337 @item C
338 A command name (i.e., a symbol satisfying @code{commandp}). Existing,
339 Completion, Prompt.
340
341 @item d
342 @cindex position argument
343 The position of point, as an integer (@pxref{Point}). No I/O.
344
345 @item D
346 A directory name. The default is the current default directory of the
347 current buffer, @code{default-directory} (@pxref{File Name Expansion}).
348 Existing, Completion, Default, Prompt.
349
350 @item e
351 The first or next mouse event in the key sequence that invoked the command.
352 More precisely, @samp{e} gets events that are lists, so you can look at
353 the data in the lists. @xref{Input Events}. No I/O.
354
355 You can use @samp{e} more than once in a single command's interactive
356 specification. If the key sequence that invoked the command has
357 @var{n} events that are lists, the @var{n}th @samp{e} provides the
358 @var{n}th such event. Events that are not lists, such as function keys
359 and @acronym{ASCII} characters, do not count where @samp{e} is concerned.
360
361 @item f
362 A file name of an existing file (@pxref{File Names}). The default
363 directory is @code{default-directory}. Existing, Completion, Default,
364 Prompt.
365
366 @item F
367 A file name. The file need not exist. Completion, Default, Prompt.
368
369 @item G
370 A file name. The file need not exist. If the user enters just a
371 directory name, then the value is just that directory name, with no
372 file name within the directory added. Completion, Default, Prompt.
373
374 @item i
375 An irrelevant argument. This code always supplies @code{nil} as
376 the argument's value. No I/O.
377
378 @item k
379 A key sequence (@pxref{Key Sequences}). This keeps reading events
380 until a command (or undefined command) is found in the current key
381 maps. The key sequence argument is represented as a string or vector.
382 The cursor does not move into the echo area. Prompt.
383
384 If @samp{k} reads a key sequence that ends with a down-event, it also
385 reads and discards the following up-event. You can get access to that
386 up-event with the @samp{U} code character.
387
388 This kind of input is used by commands such as @code{describe-key} and
389 @code{global-set-key}.
390
391 @item K
392 A key sequence, whose definition you intend to change. This works like
393 @samp{k}, except that it suppresses, for the last input event in the key
394 sequence, the conversions that are normally used (when necessary) to
395 convert an undefined key into a defined one.
396
397 @item m
398 @cindex marker argument
399 The position of the mark, as an integer. No I/O.
400
401 @item M
402 Arbitrary text, read in the minibuffer using the current buffer's input
403 method, and returned as a string (@pxref{Input Methods,,, emacs, The GNU
404 Emacs Manual}). Prompt.
405
406 @item n
407 A number, read with the minibuffer. If the input is not a number, the
408 user has to try again. @samp{n} never uses the prefix argument.
409 Prompt.
410
411 @item N
412 The numeric prefix argument; but if there is no prefix argument, read
413 a number as with @kbd{n}. The value is always a number. @xref{Prefix
414 Command Arguments}. Prompt.
415
416 @item p
417 @cindex numeric prefix argument usage
418 The numeric prefix argument. (Note that this @samp{p} is lower case.)
419 No I/O.
420
421 @item P
422 @cindex raw prefix argument usage
423 The raw prefix argument. (Note that this @samp{P} is upper case.) No
424 I/O.
425
426 @item r
427 @cindex region argument
428 Point and the mark, as two numeric arguments, smallest first. This is
429 the only code letter that specifies two successive arguments rather than
430 one. No I/O.
431
432 @item s
433 Arbitrary text, read in the minibuffer and returned as a string
434 (@pxref{Text from Minibuffer}). Terminate the input with either
435 @kbd{C-j} or @key{RET}. (@kbd{C-q} may be used to include either of
436 these characters in the input.) Prompt.
437
438 @item S
439 An interned symbol whose name is read in the minibuffer. Any whitespace
440 character terminates the input. (Use @kbd{C-q} to include whitespace in
441 the string.) Other characters that normally terminate a symbol (e.g.,
442 parentheses and brackets) do not do so here. Prompt.
443
444 @item U
445 A key sequence or @code{nil}. Can be used after a @samp{k} or
446 @samp{K} argument to get the up-event that was discarded (if any)
447 after @samp{k} or @samp{K} read a down-event. If no up-event has been
448 discarded, @samp{U} provides @code{nil} as the argument. No I/O.
449
450 @item v
451 A variable declared to be a user option (i.e., satisfying the
452 predicate @code{user-variable-p}). This reads the variable using
453 @code{read-variable}. @xref{Definition of read-variable}. Existing,
454 Completion, Prompt.
455
456 @item x
457 A Lisp object, specified with its read syntax, terminated with a
458 @kbd{C-j} or @key{RET}. The object is not evaluated. @xref{Object from
459 Minibuffer}. Prompt.
460
461 @item X
462 @cindex evaluated expression argument
463 A Lisp form's value. @samp{X} reads as @samp{x} does, then evaluates
464 the form so that its value becomes the argument for the command.
465 Prompt.
466
467 @item z
468 A coding system name (a symbol). If the user enters null input, the
469 argument value is @code{nil}. @xref{Coding Systems}. Completion,
470 Existing, Prompt.
471
472 @item Z
473 A coding system name (a symbol)---but only if this command has a prefix
474 argument. With no prefix argument, @samp{Z} provides @code{nil} as the
475 argument value. Completion, Existing, Prompt.
476 @end table
477
478 @node Interactive Examples
479 @comment node-name, next, previous, up
480 @subsection Examples of Using @code{interactive}
481 @cindex examples of using @code{interactive}
482 @cindex @code{interactive}, examples of using
483
484 Here are some examples of @code{interactive}:
485
486 @example
487 @group
488 (defun foo1 () ; @r{@code{foo1} takes no arguments,}
489 (interactive) ; @r{just moves forward two words.}
490 (forward-word 2))
491 @result{} foo1
492 @end group
493
494 @group
495 (defun foo2 (n) ; @r{@code{foo2} takes one argument,}
496 (interactive "p") ; @r{which is the numeric prefix.}
497 (forward-word (* 2 n)))
498 @result{} foo2
499 @end group
500
501 @group
502 (defun foo3 (n) ; @r{@code{foo3} takes one argument,}
503 (interactive "nCount:") ; @r{which is read with the Minibuffer.}
504 (forward-word (* 2 n)))
505 @result{} foo3
506 @end group
507
508 @group
509 (defun three-b (b1 b2 b3)
510 "Select three existing buffers.
511 Put them into three windows, selecting the last one."
512 @end group
513 (interactive "bBuffer1:\nbBuffer2:\nbBuffer3:")
514 (delete-other-windows)
515 (split-window (selected-window) 8)
516 (switch-to-buffer b1)
517 (other-window 1)
518 (split-window (selected-window) 8)
519 (switch-to-buffer b2)
520 (other-window 1)
521 (switch-to-buffer b3))
522 @result{} three-b
523 @group
524 (three-b "*scratch*" "declarations.texi" "*mail*")
525 @result{} nil
526 @end group
527 @end example
528
529 @node Interactive Call
530 @section Interactive Call
531 @cindex interactive call
532
533 After the command loop has translated a key sequence into a command it
534 invokes that command using the function @code{command-execute}. If the
535 command is a function, @code{command-execute} calls
536 @code{call-interactively}, which reads the arguments and calls the
537 command. You can also call these functions yourself.
538
539 @defun commandp object &optional for-call-interactively
540 Returns @code{t} if @var{object} is suitable for calling interactively;
541 that is, if @var{object} is a command. Otherwise, returns @code{nil}.
542
543 The interactively callable objects include strings and vectors (treated
544 as keyboard macros), lambda expressions that contain a top-level call to
545 @code{interactive}, byte-code function objects made from such lambda
546 expressions, autoload objects that are declared as interactive
547 (non-@code{nil} fourth argument to @code{autoload}), and some of the
548 primitive functions.
549
550 A symbol satisfies @code{commandp} if its function definition
551 satisfies @code{commandp}. Keys and keymaps are not commands.
552 Rather, they are used to look up commands (@pxref{Keymaps}).
553
554 If @var{for-call-interactively} is non-@code{nil}, then
555 @code{commandp} returns @code{t} only for objects that
556 @code{call-interactively} could call---thus, not for keyboard macros.
557
558 See @code{documentation} in @ref{Accessing Documentation}, for a
559 realistic example of using @code{commandp}.
560 @end defun
561
562 @defun call-interactively command &optional record-flag keys
563 This function calls the interactively callable function @var{command},
564 reading arguments according to its interactive calling specifications.
565 It returns whatever @var{command} returns. An error is signaled if
566 @var{command} is not a function or if it cannot be called
567 interactively (i.e., is not a command). Note that keyboard macros
568 (strings and vectors) are not accepted, even though they are
569 considered commands, because they are not functions. If @var{command}
570 is a symbol, then @code{call-interactively} uses its function definition.
571
572 @cindex record command history
573 If @var{record-flag} is non-@code{nil}, then this command and its
574 arguments are unconditionally added to the list @code{command-history}.
575 Otherwise, the command is added only if it uses the minibuffer to read
576 an argument. @xref{Command History}.
577
578 The argument @var{keys}, if given, specifies the sequence of events to
579 supply if the command inquires which events were used to invoke it.
580 If @var{keys} is omitted or @code{nil}, the return value of
581 @code{this-command-keys} is used. @xref{Definition of this-command-keys}.
582 @end defun
583
584 @defun command-execute command &optional record-flag keys special
585 @cindex keyboard macro execution
586 This function executes @var{command}. The argument @var{command} must
587 satisfy the @code{commandp} predicate; i.e., it must be an interactively
588 callable function or a keyboard macro.
589
590 A string or vector as @var{command} is executed with
591 @code{execute-kbd-macro}. A function is passed to
592 @code{call-interactively}, along with the optional @var{record-flag}
593 and @var{keys}.
594
595 A symbol is handled by using its function definition in its place. A
596 symbol with an @code{autoload} definition counts as a command if it was
597 declared to stand for an interactively callable function. Such a
598 definition is handled by loading the specified library and then
599 rechecking the definition of the symbol.
600
601 The argument @var{special}, if given, means to ignore the prefix
602 argument and not clear it. This is used for executing special events
603 (@pxref{Special Events}).
604 @end defun
605
606 @deffn Command execute-extended-command prefix-argument
607 @cindex read command name
608 This function reads a command name from the minibuffer using
609 @code{completing-read} (@pxref{Completion}). Then it uses
610 @code{command-execute} to call the specified command. Whatever that
611 command returns becomes the value of @code{execute-extended-command}.
612
613 @cindex execute with prefix argument
614 If the command asks for a prefix argument, it receives the value
615 @var{prefix-argument}. If @code{execute-extended-command} is called
616 interactively, the current raw prefix argument is used for
617 @var{prefix-argument}, and thus passed on to whatever command is run.
618
619 @c !!! Should this be @kindex?
620 @cindex @kbd{M-x}
621 @code{execute-extended-command} is the normal definition of @kbd{M-x},
622 so it uses the string @w{@samp{M-x }} as a prompt. (It would be better
623 to take the prompt from the events used to invoke
624 @code{execute-extended-command}, but that is painful to implement.) A
625 description of the value of the prefix argument, if any, also becomes
626 part of the prompt.
627
628 @example
629 @group
630 (execute-extended-command 3)
631 ---------- Buffer: Minibuffer ----------
632 3 M-x forward-word RET
633 ---------- Buffer: Minibuffer ----------
634 @result{} t
635 @end group
636 @end example
637 @end deffn
638
639 @defun interactive-p
640 This function returns @code{t} if the containing function (the one
641 whose code includes the call to @code{interactive-p}) was called in
642 direct response to user input. This means that it was called with the
643 function @code{call-interactively}, and that a keyboard macro is
644 not running, and that Emacs is not running in batch mode.
645
646 If the containing function was called by Lisp evaluation (or with
647 @code{apply} or @code{funcall}), then it was not called interactively.
648 @end defun
649
650 The most common use of @code{interactive-p} is for deciding whether
651 to give the user additional visual feedback (such as by printing an
652 informative message). For example:
653
654 @example
655 @group
656 ;; @r{Here's the usual way to use @code{interactive-p}.}
657 (defun foo ()
658 (interactive)
659 (when (interactive-p)
660 (message "foo")))
661 @result{} foo
662 @end group
663
664 @group
665 ;; @r{This function is just to illustrate the behavior.}
666 (defun bar ()
667 (interactive)
668 (setq foobar (list (foo) (interactive-p))))
669 @result{} bar
670 @end group
671
672 @group
673 ;; @r{Type @kbd{M-x foo}.}
674 @print{} foo
675 @end group
676
677 @group
678 ;; @r{Type @kbd{M-x bar}.}
679 ;; @r{This does not display a message.}
680 @end group
681
682 @group
683 foobar
684 @result{} (nil t)
685 @end group
686 @end example
687
688 If you want to test @emph{only} whether the function was called
689 using @code{call-interactively}, add an optional argument
690 @code{print-message} which should be non-@code{nil} in an interactive
691 call, and use the @code{interactive} spec to make sure it is
692 non-@code{nil}. Here's an example:
693
694 @example
695 (defun foo (&optional print-message)
696 (interactive "p")
697 (when print-message
698 (message "foo")))
699 @end example
700
701 @noindent
702 Defined in this way, the function does display the message when called
703 from a keyboard macro. We use @code{"p"} because the numeric prefix
704 argument is never @code{nil}.
705
706 @defun called-interactively-p
707 This function returns @code{t} when the calling function was called
708 using @code{call-interactively}.
709
710 When possible, instead of using this function, you should use the
711 method in the example above; that method makes it possible for a
712 caller to ``pretend'' that the function was called interactively.
713 @end defun
714
715 @node Command Loop Info
716 @comment node-name, next, previous, up
717 @section Information from the Command Loop
718
719 The editor command loop sets several Lisp variables to keep status
720 records for itself and for commands that are run.
721
722 @defvar last-command
723 This variable records the name of the previous command executed by the
724 command loop (the one before the current command). Normally the value
725 is a symbol with a function definition, but this is not guaranteed.
726
727 The value is copied from @code{this-command} when a command returns to
728 the command loop, except when the command has specified a prefix
729 argument for the following command.
730
731 This variable is always local to the current terminal and cannot be
732 buffer-local. @xref{Multiple Displays}.
733 @end defvar
734
735 @defvar real-last-command
736 This variable is set up by Emacs just like @code{last-command},
737 but never altered by Lisp programs.
738 @end defvar
739
740 @defvar this-command
741 @cindex current command
742 This variable records the name of the command now being executed by
743 the editor command loop. Like @code{last-command}, it is normally a symbol
744 with a function definition.
745
746 The command loop sets this variable just before running a command, and
747 copies its value into @code{last-command} when the command finishes
748 (unless the command specified a prefix argument for the following
749 command).
750
751 @cindex kill command repetition
752 Some commands set this variable during their execution, as a flag for
753 whatever command runs next. In particular, the functions for killing text
754 set @code{this-command} to @code{kill-region} so that any kill commands
755 immediately following will know to append the killed text to the
756 previous kill.
757 @end defvar
758
759 If you do not want a particular command to be recognized as the previous
760 command in the case where it got an error, you must code that command to
761 prevent this. One way is to set @code{this-command} to @code{t} at the
762 beginning of the command, and set @code{this-command} back to its proper
763 value at the end, like this:
764
765 @example
766 (defun foo (args@dots{})
767 (interactive @dots{})
768 (let ((old-this-command this-command))
769 (setq this-command t)
770 @r{@dots{}do the work@dots{}}
771 (setq this-command old-this-command)))
772 @end example
773
774 @noindent
775 We do not bind @code{this-command} with @code{let} because that would
776 restore the old value in case of error---a feature of @code{let} which
777 in this case does precisely what we want to avoid.
778
779 @defvar this-original-command
780 This has the same value as @code{this-command} except when command
781 remapping occurs (@pxref{Remapping Commands}). In that case,
782 @code{this-command} gives the command actually run (the result of
783 remapping), and @code{this-original-command} gives the command that
784 was specified to run but remapped into another command.
785 @end defvar
786
787 @defun this-command-keys
788 @anchor{Definition of this-command-keys}
789 This function returns a string or vector containing the key sequence
790 that invoked the present command, plus any previous commands that
791 generated the prefix argument for this command. Any events read by the
792 command using @code{read-event} without a timeout get tacked on to the end.
793
794 However, if the command has called @code{read-key-sequence}, it
795 returns the last read key sequence. @xref{Key Sequence Input}. The
796 value is a string if all events in the sequence were characters that
797 fit in a string. @xref{Input Events}.
798
799 @example
800 @group
801 (this-command-keys)
802 ;; @r{Now use @kbd{C-u C-x C-e} to evaluate that.}
803 @result{} "^U^X^E"
804 @end group
805 @end example
806 @end defun
807
808 @defun this-command-keys-vector
809 Like @code{this-command-keys}, except that it always returns the events
810 in a vector, so you don't need to deal with the complexities of storing
811 input events in a string (@pxref{Strings of Events}).
812 @end defun
813
814 @defun clear-this-command-keys &optional keep-record
815 This function empties out the table of events for
816 @code{this-command-keys} to return. Unless @var{keep-record} is
817 non-@code{nil}, it also empties the records that the function
818 @code{recent-keys} (@pxref{Recording Input}) will subsequently return.
819 This is useful after reading a password, to prevent the password from
820 echoing inadvertently as part of the next command in certain cases.
821 @end defun
822
823 @defvar last-nonmenu-event
824 This variable holds the last input event read as part of a key sequence,
825 not counting events resulting from mouse menus.
826
827 One use of this variable is for telling @code{x-popup-menu} where to pop
828 up a menu. It is also used internally by @code{y-or-n-p}
829 (@pxref{Yes-or-No Queries}).
830 @end defvar
831
832 @defvar last-command-event
833 @defvarx last-command-char
834 This variable is set to the last input event that was read by the
835 command loop as part of a command. The principal use of this variable
836 is in @code{self-insert-command}, which uses it to decide which
837 character to insert.
838
839 @example
840 @group
841 last-command-event
842 ;; @r{Now use @kbd{C-u C-x C-e} to evaluate that.}
843 @result{} 5
844 @end group
845 @end example
846
847 @noindent
848 The value is 5 because that is the @acronym{ASCII} code for @kbd{C-e}.
849
850 The alias @code{last-command-char} exists for compatibility with
851 Emacs version 18.
852 @end defvar
853
854 @c Emacs 19 feature
855 @defvar last-event-frame
856 This variable records which frame the last input event was directed to.
857 Usually this is the frame that was selected when the event was
858 generated, but if that frame has redirected input focus to another
859 frame, the value is the frame to which the event was redirected.
860 @xref{Input Focus}.
861
862 If the last event came from a keyboard macro, the value is @code{macro}.
863 @end defvar
864
865 @node Adjusting Point
866 @section Adjusting Point After Commands
867
868 It is not easy to display a value of point in the middle of a
869 sequence of text that has the @code{display}, @code{composition} or
870 @code{intangible} property, or is invisible. Therefore, after a
871 command finishes and returns to the command loop, if point is within
872 such a sequence, the command loop normally moves point to the edge of
873 the sequence.
874
875 A command can inhibit this feature by setting the variable
876 @code{disable-point-adjustment}:
877
878 @defvar disable-point-adjustment
879 If this variable is non-@code{nil} when a command returns to the
880 command loop, then the command loop does not check for those text
881 properties, and does not move point out of sequences that have them.
882
883 The command loop sets this variable to @code{nil} before each command,
884 so if a command sets it, the effect applies only to that command.
885 @end defvar
886
887 @defvar global-disable-point-adjustment
888 If you set this variable to a non-@code{nil} value, the feature of
889 moving point out of these sequences is completely turned off.
890 @end defvar
891
892 @node Input Events
893 @section Input Events
894 @cindex events
895 @cindex input events
896
897 The Emacs command loop reads a sequence of @dfn{input events} that
898 represent keyboard or mouse activity. The events for keyboard activity
899 are characters or symbols; mouse events are always lists. This section
900 describes the representation and meaning of input events in detail.
901
902 @defun eventp object
903 This function returns non-@code{nil} if @var{object} is an input event
904 or event type.
905
906 Note that any symbol might be used as an event or an event type.
907 @code{eventp} cannot distinguish whether a symbol is intended by Lisp
908 code to be used as an event. Instead, it distinguishes whether the
909 symbol has actually been used in an event that has been read as input in
910 the current Emacs session. If a symbol has not yet been so used,
911 @code{eventp} returns @code{nil}.
912 @end defun
913
914 @menu
915 * Keyboard Events:: Ordinary characters--keys with symbols on them.
916 * Function Keys:: Function keys--keys with names, not symbols.
917 * Mouse Events:: Overview of mouse events.
918 * Click Events:: Pushing and releasing a mouse button.
919 * Drag Events:: Moving the mouse before releasing the button.
920 * Button-Down Events:: A button was pushed and not yet released.
921 * Repeat Events:: Double and triple click (or drag, or down).
922 * Motion Events:: Just moving the mouse, not pushing a button.
923 * Focus Events:: Moving the mouse between frames.
924 * Misc Events:: Other events the system can generate.
925 * Event Examples:: Examples of the lists for mouse events.
926 * Classifying Events:: Finding the modifier keys in an event symbol.
927 Event types.
928 * Accessing Events:: Functions to extract info from events.
929 * Strings of Events:: Special considerations for putting
930 keyboard character events in a string.
931 @end menu
932
933 @node Keyboard Events
934 @subsection Keyboard Events
935
936 There are two kinds of input you can get from the keyboard: ordinary
937 keys, and function keys. Ordinary keys correspond to characters; the
938 events they generate are represented in Lisp as characters. The event
939 type of a character event is the character itself (an integer); see
940 @ref{Classifying Events}.
941
942 @cindex modifier bits (of input character)
943 @cindex basic code (of input character)
944 An input character event consists of a @dfn{basic code} between 0 and
945 524287, plus any or all of these @dfn{modifier bits}:
946
947 @table @asis
948 @item meta
949 The
950 @tex
951 @math{2^{27}}
952 @end tex
953 @ifnottex
954 2**27
955 @end ifnottex
956 bit in the character code indicates a character
957 typed with the meta key held down.
958
959 @item control
960 The
961 @tex
962 @math{2^{26}}
963 @end tex
964 @ifnottex
965 2**26
966 @end ifnottex
967 bit in the character code indicates a non-@acronym{ASCII}
968 control character.
969
970 @sc{ascii} control characters such as @kbd{C-a} have special basic
971 codes of their own, so Emacs needs no special bit to indicate them.
972 Thus, the code for @kbd{C-a} is just 1.
973
974 But if you type a control combination not in @acronym{ASCII}, such as
975 @kbd{%} with the control key, the numeric value you get is the code
976 for @kbd{%} plus
977 @tex
978 @math{2^{26}}
979 @end tex
980 @ifnottex
981 2**26
982 @end ifnottex
983 (assuming the terminal supports non-@acronym{ASCII}
984 control characters).
985
986 @item shift
987 The
988 @tex
989 @math{2^{25}}
990 @end tex
991 @ifnottex
992 2**25
993 @end ifnottex
994 bit in the character code indicates an @acronym{ASCII} control
995 character typed with the shift key held down.
996
997 For letters, the basic code itself indicates upper versus lower case;
998 for digits and punctuation, the shift key selects an entirely different
999 character with a different basic code. In order to keep within the
1000 @acronym{ASCII} character set whenever possible, Emacs avoids using the
1001 @tex
1002 @math{2^{25}}
1003 @end tex
1004 @ifnottex
1005 2**25
1006 @end ifnottex
1007 bit for those characters.
1008
1009 However, @acronym{ASCII} provides no way to distinguish @kbd{C-A} from
1010 @kbd{C-a}, so Emacs uses the
1011 @tex
1012 @math{2^{25}}
1013 @end tex
1014 @ifnottex
1015 2**25
1016 @end ifnottex
1017 bit in @kbd{C-A} and not in
1018 @kbd{C-a}.
1019
1020 @item hyper
1021 The
1022 @tex
1023 @math{2^{24}}
1024 @end tex
1025 @ifnottex
1026 2**24
1027 @end ifnottex
1028 bit in the character code indicates a character
1029 typed with the hyper key held down.
1030
1031 @item super
1032 The
1033 @tex
1034 @math{2^{23}}
1035 @end tex
1036 @ifnottex
1037 2**23
1038 @end ifnottex
1039 bit in the character code indicates a character
1040 typed with the super key held down.
1041
1042 @item alt
1043 The
1044 @tex
1045 @math{2^{22}}
1046 @end tex
1047 @ifnottex
1048 2**22
1049 @end ifnottex
1050 bit in the character code indicates a character typed with
1051 the alt key held down. (On some terminals, the key labeled @key{ALT}
1052 is actually the meta key.)
1053 @end table
1054
1055 It is best to avoid mentioning specific bit numbers in your program.
1056 To test the modifier bits of a character, use the function
1057 @code{event-modifiers} (@pxref{Classifying Events}). When making key
1058 bindings, you can use the read syntax for characters with modifier bits
1059 (@samp{\C-}, @samp{\M-}, and so on). For making key bindings with
1060 @code{define-key}, you can use lists such as @code{(control hyper ?x)} to
1061 specify the characters (@pxref{Changing Key Bindings}). The function
1062 @code{event-convert-list} converts such a list into an event type
1063 (@pxref{Classifying Events}).
1064
1065 @node Function Keys
1066 @subsection Function Keys
1067
1068 @cindex function keys
1069 Most keyboards also have @dfn{function keys}---keys that have names or
1070 symbols that are not characters. Function keys are represented in Emacs
1071 Lisp as symbols; the symbol's name is the function key's label, in lower
1072 case. For example, pressing a key labeled @key{F1} places the symbol
1073 @code{f1} in the input stream.
1074
1075 The event type of a function key event is the event symbol itself.
1076 @xref{Classifying Events}.
1077
1078 Here are a few special cases in the symbol-naming convention for
1079 function keys:
1080
1081 @table @asis
1082 @item @code{backspace}, @code{tab}, @code{newline}, @code{return}, @code{delete}
1083 These keys correspond to common @acronym{ASCII} control characters that have
1084 special keys on most keyboards.
1085
1086 In @acronym{ASCII}, @kbd{C-i} and @key{TAB} are the same character. If the
1087 terminal can distinguish between them, Emacs conveys the distinction to
1088 Lisp programs by representing the former as the integer 9, and the
1089 latter as the symbol @code{tab}.
1090
1091 Most of the time, it's not useful to distinguish the two. So normally
1092 @code{function-key-map} (@pxref{Translation Keymaps}) is set up to map
1093 @code{tab} into 9. Thus, a key binding for character code 9 (the
1094 character @kbd{C-i}) also applies to @code{tab}. Likewise for the other
1095 symbols in this group. The function @code{read-char} likewise converts
1096 these events into characters.
1097
1098 In @acronym{ASCII}, @key{BS} is really @kbd{C-h}. But @code{backspace}
1099 converts into the character code 127 (@key{DEL}), not into code 8
1100 (@key{BS}). This is what most users prefer.
1101
1102 @item @code{left}, @code{up}, @code{right}, @code{down}
1103 Cursor arrow keys
1104 @item @code{kp-add}, @code{kp-decimal}, @code{kp-divide}, @dots{}
1105 Keypad keys (to the right of the regular keyboard).
1106 @item @code{kp-0}, @code{kp-1}, @dots{}
1107 Keypad keys with digits.
1108 @item @code{kp-f1}, @code{kp-f2}, @code{kp-f3}, @code{kp-f4}
1109 Keypad PF keys.
1110 @item @code{kp-home}, @code{kp-left}, @code{kp-up}, @code{kp-right}, @code{kp-down}
1111 Keypad arrow keys. Emacs normally translates these into the
1112 corresponding non-keypad keys @code{home}, @code{left}, @dots{}
1113 @item @code{kp-prior}, @code{kp-next}, @code{kp-end}, @code{kp-begin}, @code{kp-insert}, @code{kp-delete}
1114 Additional keypad duplicates of keys ordinarily found elsewhere. Emacs
1115 normally translates these into the like-named non-keypad keys.
1116 @end table
1117
1118 You can use the modifier keys @key{ALT}, @key{CTRL}, @key{HYPER},
1119 @key{META}, @key{SHIFT}, and @key{SUPER} with function keys. The way to
1120 represent them is with prefixes in the symbol name:
1121
1122 @table @samp
1123 @item A-
1124 The alt modifier.
1125 @item C-
1126 The control modifier.
1127 @item H-
1128 The hyper modifier.
1129 @item M-
1130 The meta modifier.
1131 @item S-
1132 The shift modifier.
1133 @item s-
1134 The super modifier.
1135 @end table
1136
1137 Thus, the symbol for the key @key{F3} with @key{META} held down is
1138 @code{M-f3}. When you use more than one prefix, we recommend you
1139 write them in alphabetical order; but the order does not matter in
1140 arguments to the key-binding lookup and modification functions.
1141
1142 @node Mouse Events
1143 @subsection Mouse Events
1144
1145 Emacs supports four kinds of mouse events: click events, drag events,
1146 button-down events, and motion events. All mouse events are represented
1147 as lists. The @sc{car} of the list is the event type; this says which
1148 mouse button was involved, and which modifier keys were used with it.
1149 The event type can also distinguish double or triple button presses
1150 (@pxref{Repeat Events}). The rest of the list elements give position
1151 and time information.
1152
1153 For key lookup, only the event type matters: two events of the same type
1154 necessarily run the same command. The command can access the full
1155 values of these events using the @samp{e} interactive code.
1156 @xref{Interactive Codes}.
1157
1158 A key sequence that starts with a mouse event is read using the keymaps
1159 of the buffer in the window that the mouse was in, not the current
1160 buffer. This does not imply that clicking in a window selects that
1161 window or its buffer---that is entirely under the control of the command
1162 binding of the key sequence.
1163
1164 @node Click Events
1165 @subsection Click Events
1166 @cindex click event
1167 @cindex mouse click event
1168
1169 When the user presses a mouse button and releases it at the same
1170 location, that generates a @dfn{click} event. All mouse click event
1171 share the same format:
1172
1173 @example
1174 (@var{event-type} @var{position} @var{click-count})
1175 @end example
1176
1177 @table @asis
1178 @item @var{event-type}
1179 This is a symbol that indicates which mouse button was used. It is
1180 one of the symbols @code{mouse-1}, @code{mouse-2}, @dots{}, where the
1181 buttons are numbered left to right.
1182
1183 You can also use prefixes @samp{A-}, @samp{C-}, @samp{H-}, @samp{M-},
1184 @samp{S-} and @samp{s-} for modifiers alt, control, hyper, meta, shift
1185 and super, just as you would with function keys.
1186
1187 This symbol also serves as the event type of the event. Key bindings
1188 describe events by their types; thus, if there is a key binding for
1189 @code{mouse-1}, that binding would apply to all events whose
1190 @var{event-type} is @code{mouse-1}.
1191
1192 @item @var{position}
1193 This is the position where the mouse click occurred. The actual
1194 format of @var{position} depends on what part of a window was clicked
1195 on. The various formats are described below.
1196
1197 @item @var{click-count}
1198 This is the number of rapid repeated presses so far of the same mouse
1199 button. @xref{Repeat Events}.
1200 @end table
1201
1202 For mouse click events in the text area, mode line, header line, or in
1203 the marginal areas, @var{position} has this form:
1204
1205 @example
1206 (@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp}
1207 @var{object} @var{text-pos} (@var{col} . @var{row})
1208 @var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height}))
1209 @end example
1210
1211 @table @asis
1212 @item @var{window}
1213 This is the window in which the click occurred.
1214
1215 @item @var{pos-or-area}
1216 This is the buffer position of the character clicked on in the text
1217 area, or if clicked outside the text area, it is the window area in
1218 which the click occurred. It is one of the symbols @code{mode-line},
1219 @code{header-line}, @code{vertical-line}, @code{left-margin},
1220 @code{right-margin}, @code{left-fringe}, or @code{right-fringe}.
1221
1222 @item @var{x}, @var{y}
1223 These are the pixel-denominated coordinates of the click, relative to
1224 the top left corner of @var{window}, which is @code{(0 . 0)}.
1225 For the mode or header line, @var{y} does not have meaningful data.
1226 For the vertical line, @var{x} does not have meaningful data.
1227
1228 @item @var{timestamp}
1229 This is the time at which the event occurred, in milliseconds.
1230
1231 @item @var{object}
1232 This is the object on which the click occurred. It is either
1233 @code{nil} if there is no string property, or it has the form
1234 (@var{string} . @var{string-pos}) when there is a string-type text
1235 property at the click position.
1236
1237 @item @var{string}
1238 This is the string on which the click occurred, including any
1239 properties.
1240
1241 @item @var{string-pos}
1242 This is the position in the string on which the click occurred,
1243 relevant if properties at the click need to be looked up.
1244
1245 @item @var{text-pos}
1246 For clicks on a marginal area or on a fringe, this is the buffer
1247 position of the first visible character in the corresponding line in
1248 the window. For other events, it is the current buffer position in
1249 the window.
1250
1251 @item @var{col}, @var{row}
1252 These are the actual coordinates of the glyph under the @var{x},
1253 @var{y} position, possibly padded with default character width
1254 glyphs if @var{x} is beyond the last glyph on the line.
1255
1256 @item @var{image}
1257 This is the image object on which the click occurred. It is either
1258 @code{nil} if there is no image at the position clicked on, or it is
1259 an image object as returned by @code{find-image} if click was in an image.
1260
1261 @item @var{dx}, @var{dy}
1262 These are the pixel-denominated coordinates of the click, relative to
1263 the top left corner of @var{object}, which is @code{(0 . 0)}. If
1264 @var{object} is @code{nil}, the coordinates are relative to the top
1265 left corner of the character glyph clicked on.
1266 @end table
1267
1268 For mouse clicks on a scroll-bar, @var{position} has this form:
1269
1270 @example
1271 (@var{window} @var{area} (@var{portion} . @var{whole}) @var{timestamp} @var{part})
1272 @end example
1273
1274 @table @asis
1275 @item @var{window}
1276 This is the window whose scroll-bar was clicked on.
1277
1278 @item @var{area}
1279 This is the scroll bar where the click occurred. It is one of the
1280 symbols @code{vertical-scroll-bar} or @code{horizontal-scroll-bar}.
1281
1282 @item @var{portion}
1283 This is the distance of the click from the top or left end of
1284 the scroll bar.
1285
1286 @item @var{whole}
1287 This is the length of the entire scroll bar.
1288
1289 @item @var{timestamp}
1290 This is the time at which the event occurred, in milliseconds.
1291
1292 @item @var{part}
1293 This is the part of the scroll-bar which was clicked on. It is one
1294 of the symbols @code{above-handle}, @code{handle}, @code{below-handle},
1295 @code{up}, @code{down}, @code{top}, @code{bottom}, and @code{end-scroll}.
1296 @end table
1297
1298 In one special case, @var{buffer-pos} is a list containing a symbol (one
1299 of the symbols listed above) instead of just the symbol. This happens
1300 after the imaginary prefix keys for the event are inserted into the
1301 input stream. @xref{Key Sequence Input}.
1302
1303 @node Drag Events
1304 @subsection Drag Events
1305 @cindex drag event
1306 @cindex mouse drag event
1307
1308 With Emacs, you can have a drag event without even changing your
1309 clothes. A @dfn{drag event} happens every time the user presses a mouse
1310 button and then moves the mouse to a different character position before
1311 releasing the button. Like all mouse events, drag events are
1312 represented in Lisp as lists. The lists record both the starting mouse
1313 position and the final position, like this:
1314
1315 @example
1316 (@var{event-type}
1317 (@var{window1} @var{buffer-pos1} (@var{x1} . @var{y1}) @var{timestamp1})
1318 (@var{window2} @var{buffer-pos2} (@var{x2} . @var{y2}) @var{timestamp2})
1319 @var{click-count})
1320 @end example
1321
1322 For a drag event, the name of the symbol @var{event-type} contains the
1323 prefix @samp{drag-}. For example, dragging the mouse with button 2 held
1324 down generates a @code{drag-mouse-2} event. The second and third
1325 elements of the event give the starting and ending position of the drag.
1326 Aside from that, the data have the same meanings as in a click event
1327 (@pxref{Click Events}). You can access the second element of any mouse
1328 event in the same way, with no need to distinguish drag events from
1329 others.
1330
1331 The @samp{drag-} prefix follows the modifier key prefixes such as
1332 @samp{C-} and @samp{M-}.
1333
1334 If @code{read-key-sequence} receives a drag event that has no key
1335 binding, and the corresponding click event does have a binding, it
1336 changes the drag event into a click event at the drag's starting
1337 position. This means that you don't have to distinguish between click
1338 and drag events unless you want to.
1339
1340 @node Button-Down Events
1341 @subsection Button-Down Events
1342 @cindex button-down event
1343
1344 Click and drag events happen when the user releases a mouse button.
1345 They cannot happen earlier, because there is no way to distinguish a
1346 click from a drag until the button is released.
1347
1348 If you want to take action as soon as a button is pressed, you need to
1349 handle @dfn{button-down} events.@footnote{Button-down is the
1350 conservative antithesis of drag.} These occur as soon as a button is
1351 pressed. They are represented by lists that look exactly like click
1352 events (@pxref{Click Events}), except that the @var{event-type} symbol
1353 name contains the prefix @samp{down-}. The @samp{down-} prefix follows
1354 modifier key prefixes such as @samp{C-} and @samp{M-}.
1355
1356 The function @code{read-key-sequence} ignores any button-down events
1357 that don't have command bindings; therefore, the Emacs command loop
1358 ignores them too. This means that you need not worry about defining
1359 button-down events unless you want them to do something. The usual
1360 reason to define a button-down event is so that you can track mouse
1361 motion (by reading motion events) until the button is released.
1362 @xref{Motion Events}.
1363
1364 @node Repeat Events
1365 @subsection Repeat Events
1366 @cindex repeat events
1367 @cindex double-click events
1368 @cindex triple-click events
1369 @cindex mouse events, repeated
1370
1371 If you press the same mouse button more than once in quick succession
1372 without moving the mouse, Emacs generates special @dfn{repeat} mouse
1373 events for the second and subsequent presses.
1374
1375 The most common repeat events are @dfn{double-click} events. Emacs
1376 generates a double-click event when you click a button twice; the event
1377 happens when you release the button (as is normal for all click
1378 events).
1379
1380 The event type of a double-click event contains the prefix
1381 @samp{double-}. Thus, a double click on the second mouse button with
1382 @key{meta} held down comes to the Lisp program as
1383 @code{M-double-mouse-2}. If a double-click event has no binding, the
1384 binding of the corresponding ordinary click event is used to execute
1385 it. Thus, you need not pay attention to the double click feature
1386 unless you really want to.
1387
1388 When the user performs a double click, Emacs generates first an ordinary
1389 click event, and then a double-click event. Therefore, you must design
1390 the command binding of the double click event to assume that the
1391 single-click command has already run. It must produce the desired
1392 results of a double click, starting from the results of a single click.
1393
1394 This is convenient, if the meaning of a double click somehow ``builds
1395 on'' the meaning of a single click---which is recommended user interface
1396 design practice for double clicks.
1397
1398 If you click a button, then press it down again and start moving the
1399 mouse with the button held down, then you get a @dfn{double-drag} event
1400 when you ultimately release the button. Its event type contains
1401 @samp{double-drag} instead of just @samp{drag}. If a double-drag event
1402 has no binding, Emacs looks for an alternate binding as if the event
1403 were an ordinary drag.
1404
1405 Before the double-click or double-drag event, Emacs generates a
1406 @dfn{double-down} event when the user presses the button down for the
1407 second time. Its event type contains @samp{double-down} instead of just
1408 @samp{down}. If a double-down event has no binding, Emacs looks for an
1409 alternate binding as if the event were an ordinary button-down event.
1410 If it finds no binding that way either, the double-down event is
1411 ignored.
1412
1413 To summarize, when you click a button and then press it again right
1414 away, Emacs generates a down event and a click event for the first
1415 click, a double-down event when you press the button again, and finally
1416 either a double-click or a double-drag event.
1417
1418 If you click a button twice and then press it again, all in quick
1419 succession, Emacs generates a @dfn{triple-down} event, followed by
1420 either a @dfn{triple-click} or a @dfn{triple-drag}. The event types of
1421 these events contain @samp{triple} instead of @samp{double}. If any
1422 triple event has no binding, Emacs uses the binding that it would use
1423 for the corresponding double event.
1424
1425 If you click a button three or more times and then press it again, the
1426 events for the presses beyond the third are all triple events. Emacs
1427 does not have separate event types for quadruple, quintuple, etc.@:
1428 events. However, you can look at the event list to find out precisely
1429 how many times the button was pressed.
1430
1431 @defun event-click-count event
1432 This function returns the number of consecutive button presses that led
1433 up to @var{event}. If @var{event} is a double-down, double-click or
1434 double-drag event, the value is 2. If @var{event} is a triple event,
1435 the value is 3 or greater. If @var{event} is an ordinary mouse event
1436 (not a repeat event), the value is 1.
1437 @end defun
1438
1439 @defopt double-click-fuzz
1440 To generate repeat events, successive mouse button presses must be at
1441 approximately the same screen position. The value of
1442 @code{double-click-fuzz} specifies the maximum number of pixels the
1443 mouse may be moved (horizontally or vertically) between two successive
1444 clicks to make a double-click.
1445
1446 This variable is also the threshold for motion of the mouse to count
1447 as a drag.
1448 @end defopt
1449
1450 @defopt double-click-time
1451 To generate repeat events, the number of milliseconds between
1452 successive button presses must be less than the value of
1453 @code{double-click-time}. Setting @code{double-click-time} to
1454 @code{nil} disables multi-click detection entirely. Setting it to
1455 @code{t} removes the time limit; Emacs then detects multi-clicks by
1456 position only.
1457 @end defopt
1458
1459 @node Motion Events
1460 @subsection Motion Events
1461 @cindex motion event
1462 @cindex mouse motion events
1463
1464 Emacs sometimes generates @dfn{mouse motion} events to describe motion
1465 of the mouse without any button activity. Mouse motion events are
1466 represented by lists that look like this:
1467
1468 @example
1469 (mouse-movement (@var{window} @var{buffer-pos} (@var{x} . @var{y}) @var{timestamp}))
1470 @end example
1471
1472 The second element of the list describes the current position of the
1473 mouse, just as in a click event (@pxref{Click Events}).
1474
1475 The special form @code{track-mouse} enables generation of motion events
1476 within its body. Outside of @code{track-mouse} forms, Emacs does not
1477 generate events for mere motion of the mouse, and these events do not
1478 appear. @xref{Mouse Tracking}.
1479
1480 @node Focus Events
1481 @subsection Focus Events
1482 @cindex focus event
1483
1484 Window systems provide general ways for the user to control which window
1485 gets keyboard input. This choice of window is called the @dfn{focus}.
1486 When the user does something to switch between Emacs frames, that
1487 generates a @dfn{focus event}. The normal definition of a focus event,
1488 in the global keymap, is to select a new frame within Emacs, as the user
1489 would expect. @xref{Input Focus}.
1490
1491 Focus events are represented in Lisp as lists that look like this:
1492
1493 @example
1494 (switch-frame @var{new-frame})
1495 @end example
1496
1497 @noindent
1498 where @var{new-frame} is the frame switched to.
1499
1500 Most X window managers are set up so that just moving the mouse into a
1501 window is enough to set the focus there. Emacs appears to do this,
1502 because it changes the cursor to solid in the new frame. However, there
1503 is no need for the Lisp program to know about the focus change until
1504 some other kind of input arrives. So Emacs generates a focus event only
1505 when the user actually types a keyboard key or presses a mouse button in
1506 the new frame; just moving the mouse between frames does not generate a
1507 focus event.
1508
1509 A focus event in the middle of a key sequence would garble the
1510 sequence. So Emacs never generates a focus event in the middle of a key
1511 sequence. If the user changes focus in the middle of a key
1512 sequence---that is, after a prefix key---then Emacs reorders the events
1513 so that the focus event comes either before or after the multi-event key
1514 sequence, and not within it.
1515
1516 @node Misc Events
1517 @subsection Miscellaneous System Events
1518
1519 A few other event types represent occurrences within the system.
1520
1521 @table @code
1522 @cindex @code{delete-frame} event
1523 @item (delete-frame (@var{frame}))
1524 This kind of event indicates that the user gave the window manager
1525 a command to delete a particular window, which happens to be an Emacs frame.
1526
1527 The standard definition of the @code{delete-frame} event is to delete @var{frame}.
1528
1529 @cindex @code{iconify-frame} event
1530 @item (iconify-frame (@var{frame}))
1531 This kind of event indicates that the user iconified @var{frame} using
1532 the window manager. Its standard definition is @code{ignore}; since the
1533 frame has already been iconified, Emacs has no work to do. The purpose
1534 of this event type is so that you can keep track of such events if you
1535 want to.
1536
1537 @cindex @code{make-frame-visible} event
1538 @item (make-frame-visible (@var{frame}))
1539 This kind of event indicates that the user deiconified @var{frame} using
1540 the window manager. Its standard definition is @code{ignore}; since the
1541 frame has already been made visible, Emacs has no work to do.
1542
1543 @cindex @code{wheel-up} event
1544 @cindex @code{wheel-down} event
1545 @item (wheel-up @var{position})
1546 @item (wheel-down @var{position})
1547 These kinds of event are generated by moving a mouse wheel. Their
1548 usual meaning is a kind of scroll or zoom.
1549
1550 The element @var{position} is a list describing the position of the
1551 event, in the same format as used in a mouse-click event.
1552
1553 This kind of event is generated only on some kinds of systems. On some
1554 systems, @code{mouse-4} and @code{mouse-5} are used instead. For
1555 portable code, use the variables @code{mouse-wheel-up-event} and
1556 @code{mouse-wheel-down-event} defined in @file{mwheel.el} to determine
1557 what event types to expect for the mouse wheel.
1558
1559 @cindex @code{drag-n-drop} event
1560 @item (drag-n-drop @var{position} @var{files})
1561 This kind of event is generated when a group of files is
1562 selected in an application outside of Emacs, and then dragged and
1563 dropped onto an Emacs frame.
1564
1565 The element @var{position} is a list describing the position of the
1566 event, in the same format as used in a mouse-click event, and
1567 @var{files} is the list of file names that were dragged and dropped.
1568 The usual way to handle this event is by visiting these files.
1569
1570 This kind of event is generated, at present, only on some kinds of
1571 systems.
1572
1573 @cindex @code{help-echo} event
1574 @item help-echo
1575 This kind of event is generated when a mouse pointer moves onto a
1576 portion of buffer text which has a @code{help-echo} text property.
1577 The generated event has this form:
1578
1579 @example
1580 (help-echo @var{frame} @var{help} @var{window} @var{object} @var{pos})
1581 @end example
1582
1583 @noindent
1584 The precise meaning of the event parameters and the way these
1585 parameters are used to display the help-echo text are described in
1586 @ref{Text help-echo}.
1587
1588 @cindex @code{usr1-signal} event
1589 @cindex @code{usr2-signal} event
1590 @item usr1-signal
1591 @itemx usr2-signal
1592 These events are generated when the Emacs process receives the signals
1593 @code{SIGUSR1} and @code{SIGUSR2}. They contain no additional data
1594 because signals do not carry additional information.
1595 @end table
1596
1597 If one of these events arrives in the middle of a key sequence---that
1598 is, after a prefix key---then Emacs reorders the events so that this
1599 event comes either before or after the multi-event key sequence, not
1600 within it.
1601
1602 @node Event Examples
1603 @subsection Event Examples
1604
1605 If the user presses and releases the left mouse button over the same
1606 location, that generates a sequence of events like this:
1607
1608 @smallexample
1609 (down-mouse-1 (#<window 18 on NEWS> 2613 (0 . 38) -864320))
1610 (mouse-1 (#<window 18 on NEWS> 2613 (0 . 38) -864180))
1611 @end smallexample
1612
1613 While holding the control key down, the user might hold down the
1614 second mouse button, and drag the mouse from one line to the next.
1615 That produces two events, as shown here:
1616
1617 @smallexample
1618 (C-down-mouse-2 (#<window 18 on NEWS> 3440 (0 . 27) -731219))
1619 (C-drag-mouse-2 (#<window 18 on NEWS> 3440 (0 . 27) -731219)
1620 (#<window 18 on NEWS> 3510 (0 . 28) -729648))
1621 @end smallexample
1622
1623 While holding down the meta and shift keys, the user might press the
1624 second mouse button on the window's mode line, and then drag the mouse
1625 into another window. That produces a pair of events like these:
1626
1627 @smallexample
1628 (M-S-down-mouse-2 (#<window 18 on NEWS> mode-line (33 . 31) -457844))
1629 (M-S-drag-mouse-2 (#<window 18 on NEWS> mode-line (33 . 31) -457844)
1630 (#<window 20 on carlton-sanskrit.tex> 161 (33 . 3)
1631 -453816))
1632 @end smallexample
1633
1634 @node Classifying Events
1635 @subsection Classifying Events
1636 @cindex event type
1637
1638 Every event has an @dfn{event type}, which classifies the event for
1639 key binding purposes. For a keyboard event, the event type equals the
1640 event value; thus, the event type for a character is the character, and
1641 the event type for a function key symbol is the symbol itself. For
1642 events that are lists, the event type is the symbol in the @sc{car} of
1643 the list. Thus, the event type is always a symbol or a character.
1644
1645 Two events of the same type are equivalent where key bindings are
1646 concerned; thus, they always run the same command. That does not
1647 necessarily mean they do the same things, however, as some commands look
1648 at the whole event to decide what to do. For example, some commands use
1649 the location of a mouse event to decide where in the buffer to act.
1650
1651 Sometimes broader classifications of events are useful. For example,
1652 you might want to ask whether an event involved the @key{META} key,
1653 regardless of which other key or mouse button was used.
1654
1655 The functions @code{event-modifiers} and @code{event-basic-type} are
1656 provided to get such information conveniently.
1657
1658 @defun event-modifiers event
1659 This function returns a list of the modifiers that @var{event} has. The
1660 modifiers are symbols; they include @code{shift}, @code{control},
1661 @code{meta}, @code{alt}, @code{hyper} and @code{super}. In addition,
1662 the modifiers list of a mouse event symbol always contains one of
1663 @code{click}, @code{drag}, and @code{down}. For double or triple
1664 events, it also contains @code{double} or @code{triple}.
1665
1666 The argument @var{event} may be an entire event object, or just an
1667 event type. If @var{event} is a symbol that has never been used in an
1668 event that has been read as input in the current Emacs session, then
1669 @code{event-modifiers} can return @code{nil}, even when @var{event}
1670 actually has modifiers.
1671
1672 Here are some examples:
1673
1674 @example
1675 (event-modifiers ?a)
1676 @result{} nil
1677 (event-modifiers ?A)
1678 @result{} (shift)
1679 (event-modifiers ?\C-a)
1680 @result{} (control)
1681 (event-modifiers ?\C-%)
1682 @result{} (control)
1683 (event-modifiers ?\C-\S-a)
1684 @result{} (control shift)
1685 (event-modifiers 'f5)
1686 @result{} nil
1687 (event-modifiers 's-f5)
1688 @result{} (super)
1689 (event-modifiers 'M-S-f5)
1690 @result{} (meta shift)
1691 (event-modifiers 'mouse-1)
1692 @result{} (click)
1693 (event-modifiers 'down-mouse-1)
1694 @result{} (down)
1695 @end example
1696
1697 The modifiers list for a click event explicitly contains @code{click},
1698 but the event symbol name itself does not contain @samp{click}.
1699 @end defun
1700
1701 @defun event-basic-type event
1702 This function returns the key or mouse button that @var{event}
1703 describes, with all modifiers removed. The @var{event} argument is as
1704 in @code{event-modifiers}. For example:
1705
1706 @example
1707 (event-basic-type ?a)
1708 @result{} 97
1709 (event-basic-type ?A)
1710 @result{} 97
1711 (event-basic-type ?\C-a)
1712 @result{} 97
1713 (event-basic-type ?\C-\S-a)
1714 @result{} 97
1715 (event-basic-type 'f5)
1716 @result{} f5
1717 (event-basic-type 's-f5)
1718 @result{} f5
1719 (event-basic-type 'M-S-f5)
1720 @result{} f5
1721 (event-basic-type 'down-mouse-1)
1722 @result{} mouse-1
1723 @end example
1724 @end defun
1725
1726 @defun mouse-movement-p object
1727 This function returns non-@code{nil} if @var{object} is a mouse movement
1728 event.
1729 @end defun
1730
1731 @defun event-convert-list list
1732 This function converts a list of modifier names and a basic event type
1733 to an event type which specifies all of them. The basic event type
1734 must be the last element of the list. For example,
1735
1736 @example
1737 (event-convert-list '(control ?a))
1738 @result{} 1
1739 (event-convert-list '(control meta ?a))
1740 @result{} -134217727
1741 (event-convert-list '(control super f1))
1742 @result{} C-s-f1
1743 @end example
1744 @end defun
1745
1746 @node Accessing Events
1747 @subsection Accessing Events
1748 @cindex mouse events, accessing the data
1749 @cindex accessing data of mouse events
1750
1751 This section describes convenient functions for accessing the data in
1752 a mouse button or motion event.
1753
1754 These two functions return the starting or ending position of a
1755 mouse-button event, as a list of this form:
1756
1757 @example
1758 (@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp}
1759 @var{object} @var{text-pos} (@var{col} . @var{row})
1760 @var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height}))
1761 @end example
1762
1763 @defun event-start event
1764 This returns the starting position of @var{event}.
1765
1766 If @var{event} is a click or button-down event, this returns the
1767 location of the event. If @var{event} is a drag event, this returns the
1768 drag's starting position.
1769 @end defun
1770
1771 @defun event-end event
1772 This returns the ending position of @var{event}.
1773
1774 If @var{event} is a drag event, this returns the position where the user
1775 released the mouse button. If @var{event} is a click or button-down
1776 event, the value is actually the starting position, which is the only
1777 position such events have.
1778 @end defun
1779
1780 @cindex mouse position list, accessing
1781 These functions take a position list as described above, and
1782 return various parts of it.
1783
1784 @defun posn-window position
1785 Return the window that @var{position} is in.
1786 @end defun
1787
1788 @defun posn-area position
1789 Return the window area recorded in @var{position}. It returns @code{nil}
1790 when the event occurred in the text area of the window; otherwise, it
1791 is a symbol identifying the area in which the event occurred.
1792 @end defun
1793
1794 @defun posn-point position
1795 Return the buffer position in @var{position}. When the event occurred
1796 in the text area of the window, in a marginal area, or on a fringe,
1797 this is an integer specifying a buffer position. Otherwise, the value
1798 is undefined.
1799 @end defun
1800
1801 @defun posn-x-y position
1802 Return the pixel-based x and y coordinates in @var{position}, as a
1803 cons cell @code{(@var{x} . @var{y})}. These coordinates are relative
1804 to the window given by @code{posn-window}.
1805
1806 This example shows how to convert these window-relative coordinates
1807 into frame-relative coordinates:
1808
1809 @example
1810 (defun frame-relative-coordinates (position)
1811 "Return frame-relative coordinates from POSITION."
1812 (let* ((x-y (posn-x-y position))
1813 (window (posn-window position))
1814 (edges (window-inside-pixel-edges window)))
1815 (cons (+ (car x-y) (car edges))
1816 (+ (cdr x-y) (cadr edges)))))
1817 @end example
1818 @end defun
1819
1820 @defun posn-col-row position
1821 Return the row and column (in units of the frame's default character
1822 height and width) of @var{position}, as a cons cell @code{(@var{col} .
1823 @var{row})}. These are computed from the @var{x} and @var{y} values
1824 actually found in @var{position}.
1825 @end defun
1826
1827 @defun posn-actual-col-row position
1828 Return the actual row and column in @var{position}, as a cons cell
1829 @code{(@var{col} . @var{row})}. The values are the actual row number
1830 in the window, and the actual character number in that row. It returns
1831 @code{nil} if @var{position} does not include actual positions values.
1832 You can use @code{posn-col-row} to get approximate values.
1833 @end defun
1834
1835 @defun posn-string position
1836 Return the string object in @var{position}, either @code{nil}, or a
1837 cons cell @code{(@var{string} . @var{string-pos})}.
1838 @end defun
1839
1840 @defun posn-image position
1841 Return the image object in @var{position}, either @code{nil}, or an
1842 image @code{(image ...)}.
1843 @end defun
1844
1845 @defun posn-object position
1846 Return the image or string object in @var{position}, either
1847 @code{nil}, an image @code{(image ...)}, or a cons cell
1848 @code{(@var{string} . @var{string-pos})}.
1849 @end defun
1850
1851 @defun posn-object-x-y position
1852 Return the pixel-based x and y coordinates relative to the upper left
1853 corner of the object in @var{position} as a cons cell @code{(@var{dx}
1854 . @var{dy})}. If the @var{position} is a buffer position, return the
1855 relative position in the character at that position.
1856 @end defun
1857
1858 @defun posn-object-width-height position
1859 Return the pixel width and height of the object in @var{position} as a
1860 cons cell @code{(@var{width} . @var{height})}. If the @var{position}
1861 is a buffer position, return the size of the character at that position.
1862 @end defun
1863
1864 @cindex mouse event, timestamp
1865 @cindex timestamp of a mouse event
1866 @defun posn-timestamp position
1867 Return the timestamp in @var{position}. This is the time at which the
1868 event occurred, in milliseconds.
1869 @end defun
1870
1871 These functions compute a position list given particular buffer
1872 position or screen position. You can access the data in this position
1873 list with the functions described above.
1874
1875 @defun posn-at-point &optional pos window
1876 This function returns a position list for position @var{pos} in
1877 @var{window}. @var{pos} defaults to point in @var{window};
1878 @var{window} defaults to the selected window.
1879
1880 @code{posn-at-point} returns @code{nil} if @var{pos} is not visible in
1881 @var{window}.
1882 @end defun
1883
1884 @defun posn-at-x-y x y &optional frame-or-window whole
1885 This function returns position information corresponding to pixel
1886 coordinates @var{x} and @var{y} in a specified frame or window,
1887 @var{frame-or-window}, which defaults to the selected window.
1888 The coordinates @var{x} and @var{y} are relative to the
1889 frame or window used.
1890 If @var{whole} is @code{nil}, the coordinates are relative
1891 to the window text area, otherwise they are relative to
1892 the entire window area including scroll bars, margins and fringes.
1893 @end defun
1894
1895 These functions are useful for decoding scroll bar events.
1896
1897 @defun scroll-bar-event-ratio event
1898 This function returns the fractional vertical position of a scroll bar
1899 event within the scroll bar. The value is a cons cell
1900 @code{(@var{portion} . @var{whole})} containing two integers whose ratio
1901 is the fractional position.
1902 @end defun
1903
1904 @defun scroll-bar-scale ratio total
1905 This function multiplies (in effect) @var{ratio} by @var{total},
1906 rounding the result to an integer. The argument @var{ratio} is not a
1907 number, but rather a pair @code{(@var{num} . @var{denom})}---typically a
1908 value returned by @code{scroll-bar-event-ratio}.
1909
1910 This function is handy for scaling a position on a scroll bar into a
1911 buffer position. Here's how to do that:
1912
1913 @example
1914 (+ (point-min)
1915 (scroll-bar-scale
1916 (posn-x-y (event-start event))
1917 (- (point-max) (point-min))))
1918 @end example
1919
1920 Recall that scroll bar events have two integers forming a ratio, in place
1921 of a pair of x and y coordinates.
1922 @end defun
1923
1924 @node Strings of Events
1925 @subsection Putting Keyboard Events in Strings
1926 @cindex keyboard events in strings
1927 @cindex strings with keyboard events
1928
1929 In most of the places where strings are used, we conceptualize the
1930 string as containing text characters---the same kind of characters found
1931 in buffers or files. Occasionally Lisp programs use strings that
1932 conceptually contain keyboard characters; for example, they may be key
1933 sequences or keyboard macro definitions. However, storing keyboard
1934 characters in a string is a complex matter, for reasons of historical
1935 compatibility, and it is not always possible.
1936
1937 We recommend that new programs avoid dealing with these complexities
1938 by not storing keyboard events in strings. Here is how to do that:
1939
1940 @itemize @bullet
1941 @item
1942 Use vectors instead of strings for key sequences, when you plan to use
1943 them for anything other than as arguments to @code{lookup-key} and
1944 @code{define-key}. For example, you can use
1945 @code{read-key-sequence-vector} instead of @code{read-key-sequence}, and
1946 @code{this-command-keys-vector} instead of @code{this-command-keys}.
1947
1948 @item
1949 Use vectors to write key sequence constants containing meta characters,
1950 even when passing them directly to @code{define-key}.
1951
1952 @item
1953 When you have to look at the contents of a key sequence that might be a
1954 string, use @code{listify-key-sequence} (@pxref{Event Input Misc})
1955 first, to convert it to a list.
1956 @end itemize
1957
1958 The complexities stem from the modifier bits that keyboard input
1959 characters can include. Aside from the Meta modifier, none of these
1960 modifier bits can be included in a string, and the Meta modifier is
1961 allowed only in special cases.
1962
1963 The earliest GNU Emacs versions represented meta characters as codes
1964 in the range of 128 to 255. At that time, the basic character codes
1965 ranged from 0 to 127, so all keyboard character codes did fit in a
1966 string. Many Lisp programs used @samp{\M-} in string constants to stand
1967 for meta characters, especially in arguments to @code{define-key} and
1968 similar functions, and key sequences and sequences of events were always
1969 represented as strings.
1970
1971 When we added support for larger basic character codes beyond 127, and
1972 additional modifier bits, we had to change the representation of meta
1973 characters. Now the flag that represents the Meta modifier in a
1974 character is
1975 @tex
1976 @math{2^{27}}
1977 @end tex
1978 @ifnottex
1979 2**27
1980 @end ifnottex
1981 and such numbers cannot be included in a string.
1982
1983 To support programs with @samp{\M-} in string constants, there are
1984 special rules for including certain meta characters in a string.
1985 Here are the rules for interpreting a string as a sequence of input
1986 characters:
1987
1988 @itemize @bullet
1989 @item
1990 If the keyboard character value is in the range of 0 to 127, it can go
1991 in the string unchanged.
1992
1993 @item
1994 The meta variants of those characters, with codes in the range of
1995 @tex
1996 @math{2^{27}}
1997 @end tex
1998 @ifnottex
1999 2**27
2000 @end ifnottex
2001 to
2002 @tex
2003 @math{2^{27} + 127},
2004 @end tex
2005 @ifnottex
2006 2**27+127,
2007 @end ifnottex
2008 can also go in the string, but you must change their
2009 numeric values. You must set the
2010 @tex
2011 @math{2^{7}}
2012 @end tex
2013 @ifnottex
2014 2**7
2015 @end ifnottex
2016 bit instead of the
2017 @tex
2018 @math{2^{27}}
2019 @end tex
2020 @ifnottex
2021 2**27
2022 @end ifnottex
2023 bit, resulting in a value between 128 and 255. Only a unibyte string
2024 can include these codes.
2025
2026 @item
2027 Non-@acronym{ASCII} characters above 256 can be included in a multibyte string.
2028
2029 @item
2030 Other keyboard character events cannot fit in a string. This includes
2031 keyboard events in the range of 128 to 255.
2032 @end itemize
2033
2034 Functions such as @code{read-key-sequence} that construct strings of
2035 keyboard input characters follow these rules: they construct vectors
2036 instead of strings, when the events won't fit in a string.
2037
2038 When you use the read syntax @samp{\M-} in a string, it produces a
2039 code in the range of 128 to 255---the same code that you get if you
2040 modify the corresponding keyboard event to put it in the string. Thus,
2041 meta events in strings work consistently regardless of how they get into
2042 the strings.
2043
2044 However, most programs would do well to avoid these issues by
2045 following the recommendations at the beginning of this section.
2046
2047 @node Reading Input
2048 @section Reading Input
2049
2050 The editor command loop reads key sequences using the function
2051 @code{read-key-sequence}, which uses @code{read-event}. These and other
2052 functions for event input are also available for use in Lisp programs.
2053 See also @code{momentary-string-display} in @ref{Temporary Displays},
2054 and @code{sit-for} in @ref{Waiting}. @xref{Terminal Input}, for
2055 functions and variables for controlling terminal input modes and
2056 debugging terminal input.
2057
2058 For higher-level input facilities, see @ref{Minibuffers}.
2059
2060 @menu
2061 * Key Sequence Input:: How to read one key sequence.
2062 * Reading One Event:: How to read just one event.
2063 * Event Mod:: How Emacs modifies events as they are read.
2064 * Invoking the Input Method:: How reading an event uses the input method.
2065 * Quoted Character Input:: Asking the user to specify a character.
2066 * Event Input Misc:: How to reread or throw away input events.
2067 @end menu
2068
2069 @node Key Sequence Input
2070 @subsection Key Sequence Input
2071 @cindex key sequence input
2072
2073 The command loop reads input a key sequence at a time, by calling
2074 @code{read-key-sequence}. Lisp programs can also call this function;
2075 for example, @code{describe-key} uses it to read the key to describe.
2076
2077 @defun read-key-sequence prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop
2078 @cindex key sequence
2079 This function reads a key sequence and returns it as a string or
2080 vector. It keeps reading events until it has accumulated a complete key
2081 sequence; that is, enough to specify a non-prefix command using the
2082 currently active keymaps. (Remember that a key sequence that starts
2083 with a mouse event is read using the keymaps of the buffer in the
2084 window that the mouse was in, not the current buffer.)
2085
2086 If the events are all characters and all can fit in a string, then
2087 @code{read-key-sequence} returns a string (@pxref{Strings of Events}).
2088 Otherwise, it returns a vector, since a vector can hold all kinds of
2089 events---characters, symbols, and lists. The elements of the string or
2090 vector are the events in the key sequence.
2091
2092 Reading a key sequence includes translating the events in various
2093 ways. @xref{Translation Keymaps}.
2094
2095 The argument @var{prompt} is either a string to be displayed in the
2096 echo area as a prompt, or @code{nil}, meaning not to display a prompt.
2097 The argument @var{continue-echo}, if non-@code{nil}, means to echo
2098 this key as a continuation of the previous key.
2099
2100 Normally any upper case event is converted to lower case if the
2101 original event is undefined and the lower case equivalent is defined.
2102 The argument @var{dont-downcase-last}, if non-@code{nil}, means do not
2103 convert the last event to lower case. This is appropriate for reading
2104 a key sequence to be defined.
2105
2106 The argument @var{switch-frame-ok}, if non-@code{nil}, means that this
2107 function should process a @code{switch-frame} event if the user
2108 switches frames before typing anything. If the user switches frames
2109 in the middle of a key sequence, or at the start of the sequence but
2110 @var{switch-frame-ok} is @code{nil}, then the event will be put off
2111 until after the current key sequence.
2112
2113 The argument @var{command-loop}, if non-@code{nil}, means that this
2114 key sequence is being read by something that will read commands one
2115 after another. It should be @code{nil} if the caller will read just
2116 one key sequence.
2117
2118 In the following example, Emacs displays the prompt @samp{?} in the
2119 echo area, and then the user types @kbd{C-x C-f}.
2120
2121 @example
2122 (read-key-sequence "?")
2123
2124 @group
2125 ---------- Echo Area ----------
2126 ?@kbd{C-x C-f}
2127 ---------- Echo Area ----------
2128
2129 @result{} "^X^F"
2130 @end group
2131 @end example
2132
2133 The function @code{read-key-sequence} suppresses quitting: @kbd{C-g}
2134 typed while reading with this function works like any other character,
2135 and does not set @code{quit-flag}. @xref{Quitting}.
2136 @end defun
2137
2138 @defun read-key-sequence-vector prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop
2139 This is like @code{read-key-sequence} except that it always
2140 returns the key sequence as a vector, never as a string.
2141 @xref{Strings of Events}.
2142 @end defun
2143
2144 @cindex upper case key sequence
2145 @cindex downcasing in @code{lookup-key}
2146 If an input character is upper-case (or has the shift modifier) and
2147 has no key binding, but its lower-case equivalent has one, then
2148 @code{read-key-sequence} converts the character to lower case. Note
2149 that @code{lookup-key} does not perform case conversion in this way.
2150
2151 The function @code{read-key-sequence} also transforms some mouse events.
2152 It converts unbound drag events into click events, and discards unbound
2153 button-down events entirely. It also reshuffles focus events and
2154 miscellaneous window events so that they never appear in a key sequence
2155 with any other events.
2156
2157 @cindex @code{header-line} prefix key
2158 @cindex @code{mode-line} prefix key
2159 @cindex @code{vertical-line} prefix key
2160 @cindex @code{horizontal-scroll-bar} prefix key
2161 @cindex @code{vertical-scroll-bar} prefix key
2162 @cindex @code{menu-bar} prefix key
2163 @cindex mouse events, in special parts of frame
2164 When mouse events occur in special parts of a window, such as a mode
2165 line or a scroll bar, the event type shows nothing special---it is the
2166 same symbol that would normally represent that combination of mouse
2167 button and modifier keys. The information about the window part is kept
2168 elsewhere in the event---in the coordinates. But
2169 @code{read-key-sequence} translates this information into imaginary
2170 ``prefix keys,'' all of which are symbols: @code{header-line},
2171 @code{horizontal-scroll-bar}, @code{menu-bar}, @code{mode-line},
2172 @code{vertical-line}, and @code{vertical-scroll-bar}. You can define
2173 meanings for mouse clicks in special window parts by defining key
2174 sequences using these imaginary prefix keys.
2175
2176 For example, if you call @code{read-key-sequence} and then click the
2177 mouse on the window's mode line, you get two events, like this:
2178
2179 @example
2180 (read-key-sequence "Click on the mode line: ")
2181 @result{} [mode-line
2182 (mouse-1
2183 (#<window 6 on NEWS> mode-line
2184 (40 . 63) 5959987))]
2185 @end example
2186
2187 @defvar num-input-keys
2188 @c Emacs 19 feature
2189 This variable's value is the number of key sequences processed so far in
2190 this Emacs session. This includes key sequences read from the terminal
2191 and key sequences read from keyboard macros being executed.
2192 @end defvar
2193
2194 @node Reading One Event
2195 @subsection Reading One Event
2196 @cindex reading a single event
2197 @cindex event, reading only one
2198
2199 The lowest level functions for command input are those that read a
2200 single event.
2201
2202 None of the three functions below suppresses quitting.
2203
2204 @defun read-event &optional prompt inherit-input-method seconds
2205 This function reads and returns the next event of command input, waiting
2206 if necessary until an event is available. Events can come directly from
2207 the user or from a keyboard macro.
2208
2209 If the optional argument @var{prompt} is non-@code{nil}, it should be a
2210 string to display in the echo area as a prompt. Otherwise,
2211 @code{read-event} does not display any message to indicate it is waiting
2212 for input; instead, it prompts by echoing: it displays descriptions of
2213 the events that led to or were read by the current command. @xref{The
2214 Echo Area}.
2215
2216 If @var{inherit-input-method} is non-@code{nil}, then the current input
2217 method (if any) is employed to make it possible to enter a
2218 non-@acronym{ASCII} character. Otherwise, input method handling is disabled
2219 for reading this event.
2220
2221 If @code{cursor-in-echo-area} is non-@code{nil}, then @code{read-event}
2222 moves the cursor temporarily to the echo area, to the end of any message
2223 displayed there. Otherwise @code{read-event} does not move the cursor.
2224
2225 If @var{seconds} is non-@code{nil}, it should be a number specifying
2226 the maximum time to wait for input, in seconds. If no input arrives
2227 within that time, @code{read-event} stops waiting and returns
2228 @code{nil}. A floating-point value for @var{seconds} means to wait
2229 for a fractional number of seconds. Some systems support only a whole
2230 number of seconds; on these systems, @var{seconds} is rounded down.
2231 If @var{seconds} is @code{nil}, @code{read-event} waits as long as
2232 necessary for input to arrive.
2233
2234 If @var{seconds} is @code{nil}, Emacs is considered idle while waiting
2235 for user input to arrive. Idle timers---those created with
2236 @code{run-with-idle-timer} (@pxref{Idle Timers})---can run during this
2237 period. However, if @var{seconds} is non-@code{nil}, the state of
2238 idleness remains unchanged. If Emacs is non-idle when
2239 @code{read-event} is called, it remains non-idle throughout the
2240 operation of @code{read-event}; if Emacs is idle (which can happen if
2241 the call happens inside an idle timer), it remains idle.
2242
2243 If @code{read-event} gets an event that is defined as a help character,
2244 then in some cases @code{read-event} processes the event directly without
2245 returning. @xref{Help Functions}. Certain other events, called
2246 @dfn{special events}, are also processed directly within
2247 @code{read-event} (@pxref{Special Events}).
2248
2249 Here is what happens if you call @code{read-event} and then press the
2250 right-arrow function key:
2251
2252 @example
2253 @group
2254 (read-event)
2255 @result{} right
2256 @end group
2257 @end example
2258 @end defun
2259
2260 @defun read-char &optional prompt inherit-input-method seconds
2261 This function reads and returns a character of command input. If the
2262 user generates an event which is not a character (i.e. a mouse click or
2263 function key event), @code{read-char} signals an error. The arguments
2264 work as in @code{read-event}.
2265
2266 In the first example, the user types the character @kbd{1} (@acronym{ASCII}
2267 code 49). The second example shows a keyboard macro definition that
2268 calls @code{read-char} from the minibuffer using @code{eval-expression}.
2269 @code{read-char} reads the keyboard macro's very next character, which
2270 is @kbd{1}. Then @code{eval-expression} displays its return value in
2271 the echo area.
2272
2273 @example
2274 @group
2275 (read-char)
2276 @result{} 49
2277 @end group
2278
2279 @group
2280 ;; @r{We assume here you use @kbd{M-:} to evaluate this.}
2281 (symbol-function 'foo)
2282 @result{} "^[:(read-char)^M1"
2283 @end group
2284 @group
2285 (execute-kbd-macro 'foo)
2286 @print{} 49
2287 @result{} nil
2288 @end group
2289 @end example
2290 @end defun
2291
2292 @defun read-char-exclusive &optional prompt inherit-input-method seconds
2293 This function reads and returns a character of command input. If the
2294 user generates an event which is not a character,
2295 @code{read-char-exclusive} ignores it and reads another event, until it
2296 gets a character. The arguments work as in @code{read-event}.
2297 @end defun
2298
2299 @defvar num-nonmacro-input-events
2300 This variable holds the total number of input events received so far
2301 from the terminal---not counting those generated by keyboard macros.
2302 @end defvar
2303
2304 @node Event Mod
2305 @subsection Modifying and Translating Input Events
2306
2307 Emacs modifies every event it reads according to
2308 @code{extra-keyboard-modifiers}, then translates it through
2309 @code{keyboard-translate-table} (if applicable), before returning it
2310 from @code{read-event}.
2311
2312 @c Emacs 19 feature
2313 @defvar extra-keyboard-modifiers
2314 This variable lets Lisp programs ``press'' the modifier keys on the
2315 keyboard. The value is a character. Only the modifiers of the
2316 character matter. Each time the user types a keyboard key, it is
2317 altered as if those modifier keys were held down. For instance, if
2318 you bind @code{extra-keyboard-modifiers} to @code{?\C-\M-a}, then all
2319 keyboard input characters typed during the scope of the binding will
2320 have the control and meta modifiers applied to them. The character
2321 @code{?\C-@@}, equivalent to the integer 0, does not count as a control
2322 character for this purpose, but as a character with no modifiers.
2323 Thus, setting @code{extra-keyboard-modifiers} to zero cancels any
2324 modification.
2325
2326 When using a window system, the program can ``press'' any of the
2327 modifier keys in this way. Otherwise, only the @key{CTL} and @key{META}
2328 keys can be virtually pressed.
2329
2330 Note that this variable applies only to events that really come from
2331 the keyboard, and has no effect on mouse events or any other events.
2332 @end defvar
2333
2334 @defvar keyboard-translate-table
2335 This variable is the translate table for keyboard characters. It lets
2336 you reshuffle the keys on the keyboard without changing any command
2337 bindings. Its value is normally a char-table, or else @code{nil}.
2338 (It can also be a string or vector, but this is considered obsolete.)
2339
2340 If @code{keyboard-translate-table} is a char-table
2341 (@pxref{Char-Tables}), then each character read from the keyboard is
2342 looked up in this char-table. If the value found there is
2343 non-@code{nil}, then it is used instead of the actual input character.
2344
2345 Note that this translation is the first thing that happens to a
2346 character after it is read from the terminal. Record-keeping features
2347 such as @code{recent-keys} and dribble files record the characters after
2348 translation.
2349
2350 Note also that this translation is done before the characters are
2351 supplied to input methods (@pxref{Input Methods}). Use
2352 @code{translation-table-for-input} (@pxref{Translation of Characters}),
2353 if you want to translate characters after input methods operate.
2354 @end defvar
2355
2356 @defun keyboard-translate from to
2357 This function modifies @code{keyboard-translate-table} to translate
2358 character code @var{from} into character code @var{to}. It creates
2359 the keyboard translate table if necessary.
2360 @end defun
2361
2362 Here's an example of using the @code{keyboard-translate-table} to
2363 make @kbd{C-x}, @kbd{C-c} and @kbd{C-v} perform the cut, copy and paste
2364 operations:
2365
2366 @example
2367 (keyboard-translate ?\C-x 'control-x)
2368 (keyboard-translate ?\C-c 'control-c)
2369 (keyboard-translate ?\C-v 'control-v)
2370 (global-set-key [control-x] 'kill-region)
2371 (global-set-key [control-c] 'kill-ring-save)
2372 (global-set-key [control-v] 'yank)
2373 @end example
2374
2375 @noindent
2376 On a graphical terminal that supports extended @acronym{ASCII} input,
2377 you can still get the standard Emacs meanings of one of those
2378 characters by typing it with the shift key. That makes it a different
2379 character as far as keyboard translation is concerned, but it has the
2380 same usual meaning.
2381
2382 @xref{Translation Keymaps}, for mechanisms that translate event sequences
2383 at the level of @code{read-key-sequence}.
2384
2385 @node Invoking the Input Method
2386 @subsection Invoking the Input Method
2387
2388 The event-reading functions invoke the current input method, if any
2389 (@pxref{Input Methods}). If the value of @code{input-method-function}
2390 is non-@code{nil}, it should be a function; when @code{read-event} reads
2391 a printing character (including @key{SPC}) with no modifier bits, it
2392 calls that function, passing the character as an argument.
2393
2394 @defvar input-method-function
2395 If this is non-@code{nil}, its value specifies the current input method
2396 function.
2397
2398 @strong{Warning:} don't bind this variable with @code{let}. It is often
2399 buffer-local, and if you bind it around reading input (which is exactly
2400 when you @emph{would} bind it), switching buffers asynchronously while
2401 Emacs is waiting will cause the value to be restored in the wrong
2402 buffer.
2403 @end defvar
2404
2405 The input method function should return a list of events which should
2406 be used as input. (If the list is @code{nil}, that means there is no
2407 input, so @code{read-event} waits for another event.) These events are
2408 processed before the events in @code{unread-command-events}
2409 (@pxref{Event Input Misc}). Events
2410 returned by the input method function are not passed to the input method
2411 function again, even if they are printing characters with no modifier
2412 bits.
2413
2414 If the input method function calls @code{read-event} or
2415 @code{read-key-sequence}, it should bind @code{input-method-function} to
2416 @code{nil} first, to prevent recursion.
2417
2418 The input method function is not called when reading the second and
2419 subsequent events of a key sequence. Thus, these characters are not
2420 subject to input method processing. The input method function should
2421 test the values of @code{overriding-local-map} and
2422 @code{overriding-terminal-local-map}; if either of these variables is
2423 non-@code{nil}, the input method should put its argument into a list and
2424 return that list with no further processing.
2425
2426 @node Quoted Character Input
2427 @subsection Quoted Character Input
2428 @cindex quoted character input
2429
2430 You can use the function @code{read-quoted-char} to ask the user to
2431 specify a character, and allow the user to specify a control or meta
2432 character conveniently, either literally or as an octal character code.
2433 The command @code{quoted-insert} uses this function.
2434
2435 @defun read-quoted-char &optional prompt
2436 @cindex octal character input
2437 @cindex control characters, reading
2438 @cindex nonprinting characters, reading
2439 This function is like @code{read-char}, except that if the first
2440 character read is an octal digit (0-7), it reads any number of octal
2441 digits (but stopping if a non-octal digit is found), and returns the
2442 character represented by that numeric character code. If the
2443 character that terminates the sequence of octal digits is @key{RET},
2444 it is discarded. Any other terminating character is used as input
2445 after this function returns.
2446
2447 Quitting is suppressed when the first character is read, so that the
2448 user can enter a @kbd{C-g}. @xref{Quitting}.
2449
2450 If @var{prompt} is supplied, it specifies a string for prompting the
2451 user. The prompt string is always displayed in the echo area, followed
2452 by a single @samp{-}.
2453
2454 In the following example, the user types in the octal number 177 (which
2455 is 127 in decimal).
2456
2457 @example
2458 (read-quoted-char "What character")
2459
2460 @group
2461 ---------- Echo Area ----------
2462 What character @kbd{1 7 7}-
2463 ---------- Echo Area ----------
2464
2465 @result{} 127
2466 @end group
2467 @end example
2468 @end defun
2469
2470 @need 2000
2471 @node Event Input Misc
2472 @subsection Miscellaneous Event Input Features
2473
2474 This section describes how to ``peek ahead'' at events without using
2475 them up, how to check for pending input, and how to discard pending
2476 input. See also the function @code{read-passwd} (@pxref{Reading a
2477 Password}).
2478
2479 @defvar unread-command-events
2480 @cindex next input
2481 @cindex peeking at input
2482 This variable holds a list of events waiting to be read as command
2483 input. The events are used in the order they appear in the list, and
2484 removed one by one as they are used.
2485
2486 The variable is needed because in some cases a function reads an event
2487 and then decides not to use it. Storing the event in this variable
2488 causes it to be processed normally, by the command loop or by the
2489 functions to read command input.
2490
2491 @cindex prefix argument unreading
2492 For example, the function that implements numeric prefix arguments reads
2493 any number of digits. When it finds a non-digit event, it must unread
2494 the event so that it can be read normally by the command loop.
2495 Likewise, incremental search uses this feature to unread events with no
2496 special meaning in a search, because these events should exit the search
2497 and then execute normally.
2498
2499 The reliable and easy way to extract events from a key sequence so as to
2500 put them in @code{unread-command-events} is to use
2501 @code{listify-key-sequence} (@pxref{Strings of Events}).
2502
2503 Normally you add events to the front of this list, so that the events
2504 most recently unread will be reread first.
2505 @end defvar
2506
2507 @defun listify-key-sequence key
2508 This function converts the string or vector @var{key} to a list of
2509 individual events, which you can put in @code{unread-command-events}.
2510 @end defun
2511
2512 @defvar unread-command-char
2513 This variable holds a character to be read as command input.
2514 A value of -1 means ``empty.''
2515
2516 This variable is mostly obsolete now that you can use
2517 @code{unread-command-events} instead; it exists only to support programs
2518 written for Emacs versions 18 and earlier.
2519 @end defvar
2520
2521 @defun input-pending-p
2522 @cindex waiting for command key input
2523 This function determines whether any command input is currently
2524 available to be read. It returns immediately, with value @code{t} if
2525 there is available input, @code{nil} otherwise. On rare occasions it
2526 may return @code{t} when no input is available.
2527 @end defun
2528
2529 @defvar last-input-event
2530 @defvarx last-input-char
2531 This variable records the last terminal input event read, whether
2532 as part of a command or explicitly by a Lisp program.
2533
2534 In the example below, the Lisp program reads the character @kbd{1},
2535 @acronym{ASCII} code 49. It becomes the value of @code{last-input-event},
2536 while @kbd{C-e} (we assume @kbd{C-x C-e} command is used to evaluate
2537 this expression) remains the value of @code{last-command-event}.
2538
2539 @example
2540 @group
2541 (progn (print (read-char))
2542 (print last-command-event)
2543 last-input-event)
2544 @print{} 49
2545 @print{} 5
2546 @result{} 49
2547 @end group
2548 @end example
2549
2550 The alias @code{last-input-char} exists for compatibility with
2551 Emacs version 18.
2552 @end defvar
2553
2554 @defmac while-no-input body@dots{}
2555 This construct runs the @var{body} forms and returns the value of the
2556 last one---but only if no input arrives. If any input arrives during
2557 the execution of the @var{body} forms, it aborts them (working much
2558 like a quit). The @code{while-no-input} form returns @code{nil} if
2559 aborted by a real quit, and returns @code{t} if aborted by arrival of
2560 other input.
2561
2562 If a part of @var{body} binds @code{inhibit-quit} to non-@code{nil},
2563 arrival of input during those parts won't cause an abort until
2564 the end of that part.
2565
2566 If you want to be able to distinguish all possible values computed
2567 by @var{body} from both kinds of abort conditions, write the code
2568 like this:
2569
2570 @example
2571 (while-no-input
2572 (list
2573 (progn . @var{body})))
2574 @end example
2575 @end defmac
2576
2577 @defun discard-input
2578 @cindex flush input
2579 @cindex discard input
2580 @cindex terminate keyboard macro
2581 This function discards the contents of the terminal input buffer and
2582 cancels any keyboard macro that might be in the process of definition.
2583 It returns @code{nil}.
2584
2585 In the following example, the user may type a number of characters right
2586 after starting the evaluation of the form. After the @code{sleep-for}
2587 finishes sleeping, @code{discard-input} discards any characters typed
2588 during the sleep.
2589
2590 @example
2591 (progn (sleep-for 2)
2592 (discard-input))
2593 @result{} nil
2594 @end example
2595 @end defun
2596
2597 @node Special Events
2598 @section Special Events
2599
2600 @cindex special events
2601 Special events are handled at a very low level---as soon as they are
2602 read. The @code{read-event} function processes these events itself, and
2603 never returns them. Instead, it keeps waiting for the first event
2604 that is not special and returns that one.
2605
2606 Events that are handled in this way do not echo, they are never grouped
2607 into key sequences, and they never appear in the value of
2608 @code{last-command-event} or @code{(this-command-keys)}. They do not
2609 discard a numeric argument, they cannot be unread with
2610 @code{unread-command-events}, they may not appear in a keyboard macro,
2611 and they are not recorded in a keyboard macro while you are defining
2612 one.
2613
2614 These events do, however, appear in @code{last-input-event} immediately
2615 after they are read, and this is the way for the event's definition to
2616 find the actual event.
2617
2618 The events types @code{iconify-frame}, @code{make-frame-visible} and
2619 @code{delete-frame} are normally handled in this way. The keymap which
2620 defines how to handle special events---and which events are special---is
2621 in the variable @code{special-event-map} (@pxref{Active Keymaps}).
2622
2623 @node Waiting
2624 @section Waiting for Elapsed Time or Input
2625 @cindex pausing
2626 @cindex waiting
2627
2628 The wait functions are designed to wait for a certain amount of time
2629 to pass or until there is input. For example, you may wish to pause in
2630 the middle of a computation to allow the user time to view the display.
2631 @code{sit-for} pauses and updates the screen, and returns immediately if
2632 input comes in, while @code{sleep-for} pauses without updating the
2633 screen.
2634
2635 @defun sit-for seconds &optional nodisp
2636 This function performs redisplay (provided there is no pending input
2637 from the user), then waits @var{seconds} seconds, or until input is
2638 available. The usual purpose of @code{sit-for} is to give the user
2639 time to read text that you display. The value is @code{t} if
2640 @code{sit-for} waited the full time with no input arriving
2641 (@pxref{Event Input Misc}). Otherwise, the value is @code{nil}.
2642
2643 The argument @var{seconds} need not be an integer. If it is a floating
2644 point number, @code{sit-for} waits for a fractional number of seconds.
2645 Some systems support only a whole number of seconds; on these systems,
2646 @var{seconds} is rounded down.
2647
2648 The expression @code{(sit-for 0)} is equivalent to @code{(redisplay)},
2649 i.e. it requests a redisplay, without any delay, if there is no pending input.
2650 @xref{Forcing Redisplay}.
2651
2652 If @var{nodisp} is non-@code{nil}, then @code{sit-for} does not
2653 redisplay, but it still returns as soon as input is available (or when
2654 the timeout elapses).
2655
2656 In batch mode (@pxref{Batch Mode}), @code{sit-for} cannot be
2657 interrupted, even by input from the standard input descriptor. It is
2658 thus equivalent to @code{sleep-for}, which is described below.
2659
2660 It is also possible to call @code{sit-for} with three arguments,
2661 as @code{(sit-for @var{seconds} @var{millisec} @var{nodisp})},
2662 but that is considered obsolete.
2663 @end defun
2664
2665 @defun sleep-for seconds &optional millisec
2666 This function simply pauses for @var{seconds} seconds without updating
2667 the display. It pays no attention to available input. It returns
2668 @code{nil}.
2669
2670 The argument @var{seconds} need not be an integer. If it is a floating
2671 point number, @code{sleep-for} waits for a fractional number of seconds.
2672 Some systems support only a whole number of seconds; on these systems,
2673 @var{seconds} is rounded down.
2674
2675 The optional argument @var{millisec} specifies an additional waiting
2676 period measured in milliseconds. This adds to the period specified by
2677 @var{seconds}. If the system doesn't support waiting fractions of a
2678 second, you get an error if you specify nonzero @var{millisec}.
2679
2680 Use @code{sleep-for} when you wish to guarantee a delay.
2681 @end defun
2682
2683 @xref{Time of Day}, for functions to get the current time.
2684
2685 @node Quitting
2686 @section Quitting
2687 @cindex @kbd{C-g}
2688 @cindex quitting
2689 @cindex interrupt Lisp functions
2690
2691 Typing @kbd{C-g} while a Lisp function is running causes Emacs to
2692 @dfn{quit} whatever it is doing. This means that control returns to the
2693 innermost active command loop.
2694
2695 Typing @kbd{C-g} while the command loop is waiting for keyboard input
2696 does not cause a quit; it acts as an ordinary input character. In the
2697 simplest case, you cannot tell the difference, because @kbd{C-g}
2698 normally runs the command @code{keyboard-quit}, whose effect is to quit.
2699 However, when @kbd{C-g} follows a prefix key, they combine to form an
2700 undefined key. The effect is to cancel the prefix key as well as any
2701 prefix argument.
2702
2703 In the minibuffer, @kbd{C-g} has a different definition: it aborts out
2704 of the minibuffer. This means, in effect, that it exits the minibuffer
2705 and then quits. (Simply quitting would return to the command loop
2706 @emph{within} the minibuffer.) The reason why @kbd{C-g} does not quit
2707 directly when the command reader is reading input is so that its meaning
2708 can be redefined in the minibuffer in this way. @kbd{C-g} following a
2709 prefix key is not redefined in the minibuffer, and it has its normal
2710 effect of canceling the prefix key and prefix argument. This too
2711 would not be possible if @kbd{C-g} always quit directly.
2712
2713 When @kbd{C-g} does directly quit, it does so by setting the variable
2714 @code{quit-flag} to @code{t}. Emacs checks this variable at appropriate
2715 times and quits if it is not @code{nil}. Setting @code{quit-flag}
2716 non-@code{nil} in any way thus causes a quit.
2717
2718 At the level of C code, quitting cannot happen just anywhere; only at the
2719 special places that check @code{quit-flag}. The reason for this is
2720 that quitting at other places might leave an inconsistency in Emacs's
2721 internal state. Because quitting is delayed until a safe place, quitting
2722 cannot make Emacs crash.
2723
2724 Certain functions such as @code{read-key-sequence} or
2725 @code{read-quoted-char} prevent quitting entirely even though they wait
2726 for input. Instead of quitting, @kbd{C-g} serves as the requested
2727 input. In the case of @code{read-key-sequence}, this serves to bring
2728 about the special behavior of @kbd{C-g} in the command loop. In the
2729 case of @code{read-quoted-char}, this is so that @kbd{C-q} can be used
2730 to quote a @kbd{C-g}.
2731
2732 @cindex prevent quitting
2733 You can prevent quitting for a portion of a Lisp function by binding
2734 the variable @code{inhibit-quit} to a non-@code{nil} value. Then,
2735 although @kbd{C-g} still sets @code{quit-flag} to @code{t} as usual, the
2736 usual result of this---a quit---is prevented. Eventually,
2737 @code{inhibit-quit} will become @code{nil} again, such as when its
2738 binding is unwound at the end of a @code{let} form. At that time, if
2739 @code{quit-flag} is still non-@code{nil}, the requested quit happens
2740 immediately. This behavior is ideal when you wish to make sure that
2741 quitting does not happen within a ``critical section'' of the program.
2742
2743 @cindex @code{read-quoted-char} quitting
2744 In some functions (such as @code{read-quoted-char}), @kbd{C-g} is
2745 handled in a special way that does not involve quitting. This is done
2746 by reading the input with @code{inhibit-quit} bound to @code{t}, and
2747 setting @code{quit-flag} to @code{nil} before @code{inhibit-quit}
2748 becomes @code{nil} again. This excerpt from the definition of
2749 @code{read-quoted-char} shows how this is done; it also shows that
2750 normal quitting is permitted after the first character of input.
2751
2752 @example
2753 (defun read-quoted-char (&optional prompt)
2754 "@dots{}@var{documentation}@dots{}"
2755 (let ((message-log-max nil) done (first t) (code 0) char)
2756 (while (not done)
2757 (let ((inhibit-quit first)
2758 @dots{})
2759 (and prompt (message "%s-" prompt))
2760 (setq char (read-event))
2761 (if inhibit-quit (setq quit-flag nil)))
2762 @r{@dots{}set the variable @code{code}@dots{}})
2763 code))
2764 @end example
2765
2766 @defvar quit-flag
2767 If this variable is non-@code{nil}, then Emacs quits immediately, unless
2768 @code{inhibit-quit} is non-@code{nil}. Typing @kbd{C-g} ordinarily sets
2769 @code{quit-flag} non-@code{nil}, regardless of @code{inhibit-quit}.
2770 @end defvar
2771
2772 @defvar inhibit-quit
2773 This variable determines whether Emacs should quit when @code{quit-flag}
2774 is set to a value other than @code{nil}. If @code{inhibit-quit} is
2775 non-@code{nil}, then @code{quit-flag} has no special effect.
2776 @end defvar
2777
2778 @defmac with-local-quit body@dots{}
2779 This macro executes @var{body} forms in sequence, but allows quitting, at
2780 least locally, within @var{body} even if @code{inhibit-quit} was
2781 non-@code{nil} outside this construct. It returns the value of the
2782 last form in @var{body}, unless exited by quitting, in which case
2783 it returns @code{nil}.
2784
2785 If @code{inhibit-quit} is @code{nil} on entry to @code{with-local-quit},
2786 it only executes the @var{body}, and setting @code{quit-flag} causes
2787 a normal quit. However, if @code{inhibit-quit} is non-@code{nil} so
2788 that ordinary quitting is delayed, a non-@code{nil} @code{quit-flag}
2789 triggers a special kind of local quit. This ends the execution of
2790 @var{body} and exits the @code{with-local-quit} body with
2791 @code{quit-flag} still non-@code{nil}, so that another (ordinary) quit
2792 will happen as soon as that is allowed. If @code{quit-flag} is
2793 already non-@code{nil} at the beginning of @var{body}, the local quit
2794 happens immediately and the body doesn't execute at all.
2795
2796 This macro is mainly useful in functions that can be called from
2797 timers, process filters, process sentinels, @code{pre-command-hook},
2798 @code{post-command-hook}, and other places where @code{inhibit-quit} is
2799 normally bound to @code{t}.
2800 @end defmac
2801
2802 @deffn Command keyboard-quit
2803 This function signals the @code{quit} condition with @code{(signal 'quit
2804 nil)}. This is the same thing that quitting does. (See @code{signal}
2805 in @ref{Errors}.)
2806 @end deffn
2807
2808 You can specify a character other than @kbd{C-g} to use for quitting.
2809 See the function @code{set-input-mode} in @ref{Terminal Input}.
2810
2811 @node Prefix Command Arguments
2812 @section Prefix Command Arguments
2813 @cindex prefix argument
2814 @cindex raw prefix argument
2815 @cindex numeric prefix argument
2816
2817 Most Emacs commands can use a @dfn{prefix argument}, a number
2818 specified before the command itself. (Don't confuse prefix arguments
2819 with prefix keys.) The prefix argument is at all times represented by a
2820 value, which may be @code{nil}, meaning there is currently no prefix
2821 argument. Each command may use the prefix argument or ignore it.
2822
2823 There are two representations of the prefix argument: @dfn{raw} and
2824 @dfn{numeric}. The editor command loop uses the raw representation
2825 internally, and so do the Lisp variables that store the information, but
2826 commands can request either representation.
2827
2828 Here are the possible values of a raw prefix argument:
2829
2830 @itemize @bullet
2831 @item
2832 @code{nil}, meaning there is no prefix argument. Its numeric value is
2833 1, but numerous commands make a distinction between @code{nil} and the
2834 integer 1.
2835
2836 @item
2837 An integer, which stands for itself.
2838
2839 @item
2840 A list of one element, which is an integer. This form of prefix
2841 argument results from one or a succession of @kbd{C-u}'s with no
2842 digits. The numeric value is the integer in the list, but some
2843 commands make a distinction between such a list and an integer alone.
2844
2845 @item
2846 The symbol @code{-}. This indicates that @kbd{M--} or @kbd{C-u -} was
2847 typed, without following digits. The equivalent numeric value is
2848 @minus{}1, but some commands make a distinction between the integer
2849 @minus{}1 and the symbol @code{-}.
2850 @end itemize
2851
2852 We illustrate these possibilities by calling the following function with
2853 various prefixes:
2854
2855 @example
2856 @group
2857 (defun display-prefix (arg)
2858 "Display the value of the raw prefix arg."
2859 (interactive "P")
2860 (message "%s" arg))
2861 @end group
2862 @end example
2863
2864 @noindent
2865 Here are the results of calling @code{display-prefix} with various
2866 raw prefix arguments:
2867
2868 @example
2869 M-x display-prefix @print{} nil
2870
2871 C-u M-x display-prefix @print{} (4)
2872
2873 C-u C-u M-x display-prefix @print{} (16)
2874
2875 C-u 3 M-x display-prefix @print{} 3
2876
2877 M-3 M-x display-prefix @print{} 3 ; @r{(Same as @code{C-u 3}.)}
2878
2879 C-u - M-x display-prefix @print{} -
2880
2881 M-- M-x display-prefix @print{} - ; @r{(Same as @code{C-u -}.)}
2882
2883 C-u - 7 M-x display-prefix @print{} -7
2884
2885 M-- 7 M-x display-prefix @print{} -7 ; @r{(Same as @code{C-u -7}.)}
2886 @end example
2887
2888 Emacs uses two variables to store the prefix argument:
2889 @code{prefix-arg} and @code{current-prefix-arg}. Commands such as
2890 @code{universal-argument} that set up prefix arguments for other
2891 commands store them in @code{prefix-arg}. In contrast,
2892 @code{current-prefix-arg} conveys the prefix argument to the current
2893 command, so setting it has no effect on the prefix arguments for future
2894 commands.
2895
2896 Normally, commands specify which representation to use for the prefix
2897 argument, either numeric or raw, in the @code{interactive} specification.
2898 (@xref{Using Interactive}.) Alternatively, functions may look at the
2899 value of the prefix argument directly in the variable
2900 @code{current-prefix-arg}, but this is less clean.
2901
2902 @defun prefix-numeric-value arg
2903 This function returns the numeric meaning of a valid raw prefix argument
2904 value, @var{arg}. The argument may be a symbol, a number, or a list.
2905 If it is @code{nil}, the value 1 is returned; if it is @code{-}, the
2906 value @minus{}1 is returned; if it is a number, that number is returned;
2907 if it is a list, the @sc{car} of that list (which should be a number) is
2908 returned.
2909 @end defun
2910
2911 @defvar current-prefix-arg
2912 This variable holds the raw prefix argument for the @emph{current}
2913 command. Commands may examine it directly, but the usual method for
2914 accessing it is with @code{(interactive "P")}.
2915 @end defvar
2916
2917 @defvar prefix-arg
2918 The value of this variable is the raw prefix argument for the
2919 @emph{next} editing command. Commands such as @code{universal-argument}
2920 that specify prefix arguments for the following command work by setting
2921 this variable.
2922 @end defvar
2923
2924 @defvar last-prefix-arg
2925 The raw prefix argument value used by the previous command.
2926 @end defvar
2927
2928 The following commands exist to set up prefix arguments for the
2929 following command. Do not call them for any other reason.
2930
2931 @deffn Command universal-argument
2932 This command reads input and specifies a prefix argument for the
2933 following command. Don't call this command yourself unless you know
2934 what you are doing.
2935 @end deffn
2936
2937 @deffn Command digit-argument arg
2938 This command adds to the prefix argument for the following command. The
2939 argument @var{arg} is the raw prefix argument as it was before this
2940 command; it is used to compute the updated prefix argument. Don't call
2941 this command yourself unless you know what you are doing.
2942 @end deffn
2943
2944 @deffn Command negative-argument arg
2945 This command adds to the numeric argument for the next command. The
2946 argument @var{arg} is the raw prefix argument as it was before this
2947 command; its value is negated to form the new prefix argument. Don't
2948 call this command yourself unless you know what you are doing.
2949 @end deffn
2950
2951 @node Recursive Editing
2952 @section Recursive Editing
2953 @cindex recursive command loop
2954 @cindex recursive editing level
2955 @cindex command loop, recursive
2956
2957 The Emacs command loop is entered automatically when Emacs starts up.
2958 This top-level invocation of the command loop never exits; it keeps
2959 running as long as Emacs does. Lisp programs can also invoke the
2960 command loop. Since this makes more than one activation of the command
2961 loop, we call it @dfn{recursive editing}. A recursive editing level has
2962 the effect of suspending whatever command invoked it and permitting the
2963 user to do arbitrary editing before resuming that command.
2964
2965 The commands available during recursive editing are the same ones
2966 available in the top-level editing loop and defined in the keymaps.
2967 Only a few special commands exit the recursive editing level; the others
2968 return to the recursive editing level when they finish. (The special
2969 commands for exiting are always available, but they do nothing when
2970 recursive editing is not in progress.)
2971
2972 All command loops, including recursive ones, set up all-purpose error
2973 handlers so that an error in a command run from the command loop will
2974 not exit the loop.
2975
2976 @cindex minibuffer input
2977 Minibuffer input is a special kind of recursive editing. It has a few
2978 special wrinkles, such as enabling display of the minibuffer and the
2979 minibuffer window, but fewer than you might suppose. Certain keys
2980 behave differently in the minibuffer, but that is only because of the
2981 minibuffer's local map; if you switch windows, you get the usual Emacs
2982 commands.
2983
2984 @cindex @code{throw} example
2985 @kindex exit
2986 @cindex exit recursive editing
2987 @cindex aborting
2988 To invoke a recursive editing level, call the function
2989 @code{recursive-edit}. This function contains the command loop; it also
2990 contains a call to @code{catch} with tag @code{exit}, which makes it
2991 possible to exit the recursive editing level by throwing to @code{exit}
2992 (@pxref{Catch and Throw}). If you throw a value other than @code{t},
2993 then @code{recursive-edit} returns normally to the function that called
2994 it. The command @kbd{C-M-c} (@code{exit-recursive-edit}) does this.
2995 Throwing a @code{t} value causes @code{recursive-edit} to quit, so that
2996 control returns to the command loop one level up. This is called
2997 @dfn{aborting}, and is done by @kbd{C-]} (@code{abort-recursive-edit}).
2998
2999 Most applications should not use recursive editing, except as part of
3000 using the minibuffer. Usually it is more convenient for the user if you
3001 change the major mode of the current buffer temporarily to a special
3002 major mode, which should have a command to go back to the previous mode.
3003 (The @kbd{e} command in Rmail uses this technique.) Or, if you wish to
3004 give the user different text to edit ``recursively,'' create and select
3005 a new buffer in a special mode. In this mode, define a command to
3006 complete the processing and go back to the previous buffer. (The
3007 @kbd{m} command in Rmail does this.)
3008
3009 Recursive edits are useful in debugging. You can insert a call to
3010 @code{debug} into a function definition as a sort of breakpoint, so that
3011 you can look around when the function gets there. @code{debug} invokes
3012 a recursive edit but also provides the other features of the debugger.
3013
3014 Recursive editing levels are also used when you type @kbd{C-r} in
3015 @code{query-replace} or use @kbd{C-x q} (@code{kbd-macro-query}).
3016
3017 @defun recursive-edit
3018 @cindex suspend evaluation
3019 This function invokes the editor command loop. It is called
3020 automatically by the initialization of Emacs, to let the user begin
3021 editing. When called from a Lisp program, it enters a recursive editing
3022 level.
3023
3024 In the following example, the function @code{simple-rec} first
3025 advances point one word, then enters a recursive edit, printing out a
3026 message in the echo area. The user can then do any editing desired, and
3027 then type @kbd{C-M-c} to exit and continue executing @code{simple-rec}.
3028
3029 @example
3030 (defun simple-rec ()
3031 (forward-word 1)
3032 (message "Recursive edit in progress")
3033 (recursive-edit)
3034 (forward-word 1))
3035 @result{} simple-rec
3036 (simple-rec)
3037 @result{} nil
3038 @end example
3039 @end defun
3040
3041 @deffn Command exit-recursive-edit
3042 This function exits from the innermost recursive edit (including
3043 minibuffer input). Its definition is effectively @code{(throw 'exit
3044 nil)}.
3045 @end deffn
3046
3047 @deffn Command abort-recursive-edit
3048 This function aborts the command that requested the innermost recursive
3049 edit (including minibuffer input), by signaling @code{quit}
3050 after exiting the recursive edit. Its definition is effectively
3051 @code{(throw 'exit t)}. @xref{Quitting}.
3052 @end deffn
3053
3054 @deffn Command top-level
3055 This function exits all recursive editing levels; it does not return a
3056 value, as it jumps completely out of any computation directly back to
3057 the main command loop.
3058 @end deffn
3059
3060 @defun recursion-depth
3061 This function returns the current depth of recursive edits. When no
3062 recursive edit is active, it returns 0.
3063 @end defun
3064
3065 @node Disabling Commands
3066 @section Disabling Commands
3067 @cindex disabled command
3068
3069 @dfn{Disabling a command} marks the command as requiring user
3070 confirmation before it can be executed. Disabling is used for commands
3071 which might be confusing to beginning users, to prevent them from using
3072 the commands by accident.
3073
3074 @kindex disabled
3075 The low-level mechanism for disabling a command is to put a
3076 non-@code{nil} @code{disabled} property on the Lisp symbol for the
3077 command. These properties are normally set up by the user's
3078 init file (@pxref{Init File}) with Lisp expressions such as this:
3079
3080 @example
3081 (put 'upcase-region 'disabled t)
3082 @end example
3083
3084 @noindent
3085 For a few commands, these properties are present by default (you can
3086 remove them in your init file if you wish).
3087
3088 If the value of the @code{disabled} property is a string, the message
3089 saying the command is disabled includes that string. For example:
3090
3091 @example
3092 (put 'delete-region 'disabled
3093 "Text deleted this way cannot be yanked back!\n")
3094 @end example
3095
3096 @xref{Disabling,,, emacs, The GNU Emacs Manual}, for the details on
3097 what happens when a disabled command is invoked interactively.
3098 Disabling a command has no effect on calling it as a function from Lisp
3099 programs.
3100
3101 @deffn Command enable-command command
3102 Allow @var{command} (a symbol) to be executed without special
3103 confirmation from now on, and alter the user's init file (@pxref{Init
3104 File}) so that this will apply to future sessions.
3105 @end deffn
3106
3107 @deffn Command disable-command command
3108 Require special confirmation to execute @var{command} from now on, and
3109 alter the user's init file so that this will apply to future sessions.
3110 @end deffn
3111
3112 @defvar disabled-command-function
3113 The value of this variable should be a function. When the user
3114 invokes a disabled command interactively, this function is called
3115 instead of the disabled command. It can use @code{this-command-keys}
3116 to determine what the user typed to run the command, and thus find the
3117 command itself.
3118
3119 The value may also be @code{nil}. Then all commands work normally,
3120 even disabled ones.
3121
3122 By default, the value is a function that asks the user whether to
3123 proceed.
3124 @end defvar
3125
3126 @node Command History
3127 @section Command History
3128 @cindex command history
3129 @cindex complex command
3130 @cindex history of commands
3131
3132 The command loop keeps a history of the complex commands that have
3133 been executed, to make it convenient to repeat these commands. A
3134 @dfn{complex command} is one for which the interactive argument reading
3135 uses the minibuffer. This includes any @kbd{M-x} command, any
3136 @kbd{M-:} command, and any command whose @code{interactive}
3137 specification reads an argument from the minibuffer. Explicit use of
3138 the minibuffer during the execution of the command itself does not cause
3139 the command to be considered complex.
3140
3141 @defvar command-history
3142 This variable's value is a list of recent complex commands, each
3143 represented as a form to evaluate. It continues to accumulate all
3144 complex commands for the duration of the editing session, but when it
3145 reaches the maximum size (@pxref{Minibuffer History}), the oldest
3146 elements are deleted as new ones are added.
3147
3148 @example
3149 @group
3150 command-history
3151 @result{} ((switch-to-buffer "chistory.texi")
3152 (describe-key "^X^[")
3153 (visit-tags-table "~/emacs/src/")
3154 (find-tag "repeat-complex-command"))
3155 @end group
3156 @end example
3157 @end defvar
3158
3159 This history list is actually a special case of minibuffer history
3160 (@pxref{Minibuffer History}), with one special twist: the elements are
3161 expressions rather than strings.
3162
3163 There are a number of commands devoted to the editing and recall of
3164 previous commands. The commands @code{repeat-complex-command}, and
3165 @code{list-command-history} are described in the user manual
3166 (@pxref{Repetition,,, emacs, The GNU Emacs Manual}). Within the
3167 minibuffer, the usual minibuffer history commands are available.
3168
3169 @node Keyboard Macros
3170 @section Keyboard Macros
3171 @cindex keyboard macros
3172
3173 A @dfn{keyboard macro} is a canned sequence of input events that can
3174 be considered a command and made the definition of a key. The Lisp
3175 representation of a keyboard macro is a string or vector containing the
3176 events. Don't confuse keyboard macros with Lisp macros
3177 (@pxref{Macros}).
3178
3179 @defun execute-kbd-macro kbdmacro &optional count loopfunc
3180 This function executes @var{kbdmacro} as a sequence of events. If
3181 @var{kbdmacro} is a string or vector, then the events in it are executed
3182 exactly as if they had been input by the user. The sequence is
3183 @emph{not} expected to be a single key sequence; normally a keyboard
3184 macro definition consists of several key sequences concatenated.
3185
3186 If @var{kbdmacro} is a symbol, then its function definition is used in
3187 place of @var{kbdmacro}. If that is another symbol, this process repeats.
3188 Eventually the result should be a string or vector. If the result is
3189 not a symbol, string, or vector, an error is signaled.
3190
3191 The argument @var{count} is a repeat count; @var{kbdmacro} is executed that
3192 many times. If @var{count} is omitted or @code{nil}, @var{kbdmacro} is
3193 executed once. If it is 0, @var{kbdmacro} is executed over and over until it
3194 encounters an error or a failing search.
3195
3196 If @var{loopfunc} is non-@code{nil}, it is a function that is called,
3197 without arguments, prior to each iteration of the macro. If
3198 @var{loopfunc} returns @code{nil}, then this stops execution of the macro.
3199
3200 @xref{Reading One Event}, for an example of using @code{execute-kbd-macro}.
3201 @end defun
3202
3203 @defvar executing-kbd-macro
3204 This variable contains the string or vector that defines the keyboard
3205 macro that is currently executing. It is @code{nil} if no macro is
3206 currently executing. A command can test this variable so as to behave
3207 differently when run from an executing macro. Do not set this variable
3208 yourself.
3209 @end defvar
3210
3211 @defvar defining-kbd-macro
3212 This variable is non-@code{nil} if and only if a keyboard macro is
3213 being defined. A command can test this variable so as to behave
3214 differently while a macro is being defined. The value is
3215 @code{append} while appending to the definition of an existing macro.
3216 The commands @code{start-kbd-macro}, @code{kmacro-start-macro} and
3217 @code{end-kbd-macro} set this variable---do not set it yourself.
3218
3219 The variable is always local to the current terminal and cannot be
3220 buffer-local. @xref{Multiple Displays}.
3221 @end defvar
3222
3223 @defvar last-kbd-macro
3224 This variable is the definition of the most recently defined keyboard
3225 macro. Its value is a string or vector, or @code{nil}.
3226
3227 The variable is always local to the current terminal and cannot be
3228 buffer-local. @xref{Multiple Displays}.
3229 @end defvar
3230
3231 @defvar kbd-macro-termination-hook
3232 This normal hook (@pxref{Standard Hooks}) is run when a keyboard
3233 macro terminates, regardless of what caused it to terminate (reaching
3234 the macro end or an error which ended the macro prematurely).
3235 @end defvar
3236
3237 @ignore
3238 arch-tag: e34944ad-7d5c-4980-be00-36a5fe54d4b1
3239 @end ignore