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