(unrelocate_symbols): Add AIX4_1 conditionals and code.
[bpt/emacs.git] / lispref / commands.texi
CommitLineData
8db970a4
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
f142f62a 3@c Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
8db970a4
RS
4@c See the file elisp.texi for copying conditions.
5@setfilename ../info/commands
6@node Command Loop, Keymaps, Minibuffers, Top
7@chapter Command Loop
8@cindex editor command loop
9@cindex command loop
10
11 When you run Emacs, it enters the @dfn{editor command loop} almost
12immediately. This loop reads key sequences, executes their definitions,
13and displays the results. In this chapter, we describe how these things
14are done, and the subroutines that allow Lisp programs to do them.
15
16@menu
17* Command Overview:: How the command loop reads commands.
18* Defining Commands:: Specifying how a function should read arguments.
19* Interactive Call:: Calling a command, so that it will read arguments.
20* Command Loop Info:: Variables set by the command loop for you to examine.
21* Input Events:: What input looks like when you read it.
22* Reading Input:: How to read input events from the keyboard or mouse.
23* Waiting:: Waiting for user input or elapsed time.
24* Quitting:: How @kbd{C-g} works. How to catch or defer quitting.
25* Prefix Command Arguments:: How the commands to set prefix args work.
26* Recursive Editing:: Entering a recursive edit,
27 and why you usually shouldn't.
28* Disabling Commands:: How the command loop handles disabled commands.
29* Command History:: How the command history is set up, and how accessed.
30* Keyboard Macros:: How keyboard macros are implemented.
31@end menu
32
33@node Command Overview
34@section Command Loop Overview
35
36 The first thing the command loop must do is read a key sequence, which
37is a sequence of events that translates into a command. It does this by
38calling the function @code{read-key-sequence}. Your Lisp code can also
39call this function (@pxref{Key Sequence Input}). Lisp programs can also
40do input at a lower level with @code{read-event} (@pxref{Reading One
41Event}) or discard pending input with @code{discard-input}
f142f62a 42(@pxref{Event Input Misc}).
8db970a4
RS
43
44 The key sequence is translated into a command through the currently
45active keymaps. @xref{Key Lookup}, for information on how this is done.
46The result should be a keyboard macro or an interactively callable
47function. If the key is @kbd{M-x}, then it reads the name of another
f142f62a 48command, which it then calls. This is done by the command
8db970a4
RS
49@code{execute-extended-command} (@pxref{Interactive Call}).
50
f142f62a
RS
51 To execute a command requires first reading the arguments for it.
52This is done by calling @code{command-execute} (@pxref{Interactive
53Call}). For commands written in Lisp, the @code{interactive}
54specification says how to read the arguments. This may use the prefix
55argument (@pxref{Prefix Command Arguments}) or may read with prompting
56in the minibuffer (@pxref{Minibuffers}). For example, the command
57@code{find-file} has an @code{interactive} specification which says to
58read a file name using the minibuffer. The command's function body does
59not use the minibuffer; if you call this command from Lisp code as a
60function, you must supply the file name string as an ordinary Lisp
61function argument.
8db970a4
RS
62
63 If the command is a string or vector (i.e., a keyboard macro) then
64@code{execute-kbd-macro} is used to execute it. You can call this
65function yourself (@pxref{Keyboard Macros}).
66
f142f62a
RS
67 To terminate the execution of a running command, type @kbd{C-g}. This
68character causes @dfn{quitting} (@pxref{Quitting}).
8db970a4
RS
69
70@defvar pre-command-hook
f142f62a
RS
71The editor command loop runs this normal hook before each command. At
72that time, @code{this-command} contains the command that is about to
73run, and @code{last-command} describes the previous command.
b22f3a19 74@xref{Hooks}.
8db970a4
RS
75@end defvar
76
77@defvar post-command-hook
f142f62a
RS
78The editor command loop runs this normal hook after each command
79(including commands terminated prematurely by quitting or by errors),
80and also when the command loop is first entered. At that time,
81@code{this-command} describes the command that just ran, and
b22f3a19 82@code{last-command} describes the command before that. @xref{Hooks}.
8db970a4
RS
83@end defvar
84
b22f3a19
RS
85 An erroneous function in the @code{pre-command-hook} list could easily
86make Emacs go into an infinite loop of errors. To protect you from this
87sort of painful problem, Emacs sets the hook variable to @code{nil}
88temporarily while running the functions in the hook. Thus, if a hook
89function gets an error, the hook variable is left as @code{nil}. Emacs
90does the same thing for @code{post-command-hook}.
91
92 Quitting is suppressed while running @code{pre-command-hook} and
93@code{post-command-hook}; this is because otherwise a quit, happening by
94chance within one of these hooks, would turn off the hook.
95
96 One inconvenient result of these protective features is that you
97cannot have a function in @code{post-command-hook} or
98@code{pre-command-hook} which changes the value of that variable. But
99that's not a real limitation. If you want hook functions to change the
100hook, simply add one fixed function to the hook, and code that function
101to look in another hook variable for other functions to call. Here is
102an example:
103
104@example
105;; @r{Set up the mechanism.}
106(defvar current-post-command-function nil)
107(defun run-current-post-command-function ()
108 (if current-post-command-function
109 (funcall current-post-command-function)))
110(add-hooks 'post-command-hook
111 'run-current-post-command-function)
112
113;; @r{Here's a hook function which replaces itself}
114;; @r{with a different hook function to run next time.}
115(defun first-post-command-function ()
116 (setq current-post-command-function
117 'second-post-command-function))
118@end example
119
8db970a4
RS
120@node Defining Commands
121@section Defining Commands
122@cindex defining commands
123@cindex commands, defining
124@cindex functions, making them interactive
125@cindex interactive function
126
127 A Lisp function becomes a command when its body contains, at top
b22f3a19 128level, a form that calls the special form @code{interactive}. This
8db970a4
RS
129form does nothing when actually executed, but its presence serves as a
130flag to indicate that interactive calling is permitted. Its argument
131controls the reading of arguments for an interactive call.
132
133@menu
134* Using Interactive:: General rules for @code{interactive}.
135* Interactive Codes:: The standard letter-codes for reading arguments
136 in various ways.
137* Interactive Examples:: Examples of how to read interactive arguments.
138@end menu
139
140@node Using Interactive
141@subsection Using @code{interactive}
142
143 This section describes how to write the @code{interactive} form that
144makes a Lisp function an interactively-callable command.
145
146@defspec interactive arg-descriptor
147@cindex argument descriptors
148This special form declares that the function in which it appears is a
149command, and that it may therefore be called interactively (via
150@kbd{M-x} or by entering a key sequence bound to it). The argument
f142f62a
RS
151@var{arg-descriptor} declares how to compute the arguments to the
152command when the command is called interactively.
8db970a4
RS
153
154A command may be called from Lisp programs like any other function, but
f142f62a
RS
155then the caller supplies the arguments and @var{arg-descriptor} has no
156effect.
8db970a4
RS
157
158The @code{interactive} form has its effect because the command loop
159(actually, its subroutine @code{call-interactively}) scans through the
160function definition looking for it, before calling the function. Once
161the function is called, all its body forms including the
162@code{interactive} form are executed, but at this time
163@code{interactive} simply returns @code{nil} without even evaluating its
164argument.
165@end defspec
166
167There are three possibilities for the argument @var{arg-descriptor}:
168
169@itemize @bullet
170@item
171It may be omitted or @code{nil}; then the command is called with no
172arguments. This leads quickly to an error if the command requires one
173or more arguments.
174
175@item
176It may be a Lisp expression that is not a string; then it should be a
177form that is evaluated to get a list of arguments to pass to the
178command.
179@cindex argument evaluation form
180
181@item
182@cindex argument prompt
183It may be a string; then its contents should consist of a code character
184followed by a prompt (which some code characters use and some ignore).
185The prompt ends either with the end of the string or with a newline.
186Here is a simple example:
187
188@smallexample
189(interactive "bFrobnicate buffer: ")
190@end smallexample
191
192@noindent
193The code letter @samp{b} says to read the name of an existing buffer,
194with completion. The buffer name is the sole argument passed to the
195command. The rest of the string is a prompt.
196
197If there is a newline character in the string, it terminates the prompt.
198If the string does not end there, then the rest of the string should
199contain another code character and prompt, specifying another argument.
200You can specify any number of arguments in this way.
201
202@c Emacs 19 feature
203The prompt string can use @samp{%} to include previous argument values
b22f3a19
RS
204(starting with the first argument) in the prompt. This is done using
205@code{format} (@pxref{Formatting Strings}). For example, here is how
206you could read the name of an existing buffer followed by a new name to
207give to that buffer:
8db970a4
RS
208
209@smallexample
210@group
211(interactive "bBuffer to rename: \nsRename buffer %s to: ")
212@end group
213@end smallexample
214
215@cindex @samp{*} in interactive
f142f62a 216@cindex read-only buffers in interactive
8db970a4
RS
217If the first character in the string is @samp{*}, then an error is
218signaled if the buffer is read-only.
219
220@cindex @samp{@@} in interactive
221@c Emacs 19 feature
222If the first character in the string is @samp{@@}, and if the key
223sequence used to invoke the command includes any mouse events, then
224the window associated with the first of those events is selected
225before the command is run.
226
227You can use @samp{*} and @samp{@@} together; the order does not matter.
228Actual reading of arguments is controlled by the rest of the prompt
229string (starting with the first character that is not @samp{*} or
230@samp{@@}).
231@end itemize
232
233@node Interactive Codes
234@comment node-name, next, previous, up
235@subsection Code Characters for @code{interactive}
236@cindex interactive code description
237@cindex description for interactive codes
238@cindex codes, interactive, description of
239@cindex characters for interactive codes
240
241 The code character descriptions below contain a number of key words,
242defined here as follows:
243
244@table @b
245@item Completion
246@cindex interactive completion
247Provide completion. @key{TAB}, @key{SPC}, and @key{RET} perform name
248completion because the argument is read using @code{completing-read}
249(@pxref{Completion}). @kbd{?} displays a list of possible completions.
250
251@item Existing
252Require the name of an existing object. An invalid name is not
253accepted; the commands to exit the minibuffer do not exit if the current
254input is not valid.
255
256@item Default
257@cindex default argument string
258A default value of some sort is used if the user enters no text in the
259minibuffer. The default depends on the code character.
260
261@item No I/O
262This code letter computes an argument without reading any input.
263Therefore, it does not use a prompt string, and any prompt string you
264supply is ignored.
265
f142f62a
RS
266Even though the code letter doesn't use a prompt string, you must follow
267it with a newline if it is not the last code character in the string.
268
8db970a4
RS
269@item Prompt
270A prompt immediately follows the code character. The prompt ends either
271with the end of the string or with a newline.
272
273@item Special
274This code character is meaningful only at the beginning of the
275interactive string, and it does not look for a prompt or a newline.
276It is a single, isolated character.
277@end table
278
279@cindex reading interactive arguments
280 Here are the code character descriptions for use with @code{interactive}:
281
282@table @samp
283@item *
284Signal an error if the current buffer is read-only. Special.
285
286@item @@
287Select the window mentioned in the first mouse event in the key
288sequence that invoked this command. Special.
289
290@item a
b22f3a19 291A function name (i.e., a symbol satisfying @code{fboundp}). Existing,
8db970a4
RS
292Completion, Prompt.
293
294@item b
295The name of an existing buffer. By default, uses the name of the
296current buffer (@pxref{Buffers}). Existing, Completion, Default,
297Prompt.
298
299@item B
300A buffer name. The buffer need not exist. By default, uses the name of
301a recently used buffer other than the current buffer. Completion,
b22f3a19 302Default, Prompt.
8db970a4
RS
303
304@item c
305A character. The cursor does not move into the echo area. Prompt.
306
307@item C
308A command name (i.e., a symbol satisfying @code{commandp}). Existing,
309Completion, Prompt.
310
311@item d
312@cindex position argument
f142f62a 313The position of point, as an integer (@pxref{Point}). No I/O.
8db970a4
RS
314
315@item D
316A directory name. The default is the current default directory of the
317current buffer, @code{default-directory} (@pxref{System Environment}).
318Existing, Completion, Default, Prompt.
319
320@item e
321The first or next mouse event in the key sequence that invoked the command.
b22f3a19 322More precisely, @samp{e} gets events that are lists, so you can look at
8db970a4
RS
323the data in the lists. @xref{Input Events}. No I/O.
324
325You can use @samp{e} more than once in a single command's interactive
b22f3a19 326specification. If the key sequence that invoked the command has
f142f62a 327@var{n} events that are lists, the @var{n}th @samp{e} provides the
b22f3a19 328@var{n}th such event. Events that are not lists, such as function keys
8db970a4
RS
329and @sc{ASCII} characters, do not count where @samp{e} is concerned.
330
8db970a4
RS
331@item f
332A file name of an existing file (@pxref{File Names}). The default
333directory is @code{default-directory}. Existing, Completion, Default,
334Prompt.
335
336@item F
337A file name. The file need not exist. Completion, Default, Prompt.
338
339@item k
340A key sequence (@pxref{Keymap Terminology}). This keeps reading events
341until a command (or undefined command) is found in the current key
342maps. The key sequence argument is represented as a string or vector.
343The cursor does not move into the echo area. Prompt.
344
345This kind of input is used by commands such as @code{describe-key} and
346@code{global-set-key}.
347
348@item m
349@cindex marker argument
f142f62a 350The position of the mark, as an integer. No I/O.
8db970a4
RS
351
352@item n
353A number read with the minibuffer. If the input is not a number, the
354user is asked to try again. The prefix argument, if any, is not used.
355Prompt.
356
357@item N
358@cindex raw prefix argument usage
f142f62a 359The raw prefix argument. If the prefix argument is @code{nil}, then
b22f3a19
RS
360read a number as with @kbd{n}. Requires a number. @xref{Prefix Command
361Arguments}. Prompt.
8db970a4
RS
362
363@item p
364@cindex numeric prefix argument usage
365The numeric prefix argument. (Note that this @samp{p} is lower case.)
b22f3a19 366No I/O.
8db970a4
RS
367
368@item P
b22f3a19
RS
369The raw prefix argument. (Note that this @samp{P} is upper case.) No
370I/O.
8db970a4
RS
371
372@item r
373@cindex region argument
374Point and the mark, as two numeric arguments, smallest first. This is
375the only code letter that specifies two successive arguments rather than
376one. No I/O.
377
378@item s
379Arbitrary text, read in the minibuffer and returned as a string
380(@pxref{Text from Minibuffer}). Terminate the input with either
381@key{LFD} or @key{RET}. (@kbd{C-q} may be used to include either of
382these characters in the input.) Prompt.
383
384@item S
385An interned symbol whose name is read in the minibuffer. Any whitespace
386character terminates the input. (Use @kbd{C-q} to include whitespace in
387the string.) Other characters that normally terminate a symbol (e.g.,
388parentheses and brackets) do not do so here. Prompt.
389
390@item v
391A variable declared to be a user option (i.e., satisfying the predicate
392@code{user-variable-p}). @xref{High-Level Completion}. Existing,
393Completion, Prompt.
394
395@item x
b22f3a19 396A Lisp object, specified with its read syntax, terminated with a
8db970a4
RS
397@key{LFD} or @key{RET}. The object is not evaluated. @xref{Object from
398Minibuffer}. Prompt.
399
400@item X
401@cindex evaluated expression argument
402A Lisp form is read as with @kbd{x}, but then evaluated so that its
403value becomes the argument for the command. Prompt.
404@end table
405
406@node Interactive Examples
407@comment node-name, next, previous, up
408@subsection Examples of Using @code{interactive}
409@cindex examples of using @code{interactive}
410@cindex @code{interactive}, examples of using
411
412 Here are some examples of @code{interactive}:
413
414@example
415@group
416(defun foo1 () ; @r{@code{foo1} takes no arguments,}
417 (interactive) ; @r{just moves forward two words.}
418 (forward-word 2))
419 @result{} foo1
420@end group
421
422@group
423(defun foo2 (n) ; @r{@code{foo2} takes one argument,}
424 (interactive "p") ; @r{which is the numeric prefix.}
425 (forward-word (* 2 n)))
426 @result{} foo2
427@end group
428
429@group
430(defun foo3 (n) ; @r{@code{foo3} takes one argument,}
431 (interactive "nCount:") ; @r{which is read with the Minibuffer.}
432 (forward-word (* 2 n)))
433 @result{} foo3
434@end group
435
436@group
437(defun three-b (b1 b2 b3)
438 "Select three existing buffers.
439Put them into three windows, selecting the last one."
440@end group
441 (interactive "bBuffer1:\nbBuffer2:\nbBuffer3:")
442 (delete-other-windows)
443 (split-window (selected-window) 8)
444 (switch-to-buffer b1)
445 (other-window 1)
446 (split-window (selected-window) 8)
447 (switch-to-buffer b2)
448 (other-window 1)
449 (switch-to-buffer b3))
450 @result{} three-b
451@group
452(three-b "*scratch*" "declarations.texi" "*mail*")
453 @result{} nil
454@end group
455@end example
456
457@node Interactive Call
458@section Interactive Call
459@cindex interactive call
460
461 After the command loop has translated a key sequence into a
462definition, it invokes that definition using the function
463@code{command-execute}. If the definition is a function that is a
464command, @code{command-execute} calls @code{call-interactively}, which
465reads the arguments and calls the command. You can also call these
466functions yourself.
467
468@defun commandp object
469Returns @code{t} if @var{object} is suitable for calling interactively;
470that is, if @var{object} is a command. Otherwise, returns @code{nil}.
471
472The interactively callable objects include strings and vectors (treated
473as keyboard macros), lambda expressions that contain a top-level call to
f142f62a
RS
474@code{interactive}, compiled function objects made from such lambda
475expressions, autoload objects that are declared as interactive
476(non-@code{nil} fourth argument to @code{autoload}), and some of the
477primitive functions.
8db970a4
RS
478
479A symbol is @code{commandp} if its function definition is
480@code{commandp}.
481
482Keys and keymaps are not commands. Rather, they are used to look up
483commands (@pxref{Keymaps}).
484
485See @code{documentation} in @ref{Accessing Documentation}, for a
486realistic example of using @code{commandp}.
487@end defun
488
489@defun call-interactively command &optional record-flag
490This function calls the interactively callable function @var{command},
491reading arguments according to its interactive calling specifications.
b22f3a19
RS
492An error is signaled if @var{command} is not a function or if it cannot
493be called interactively (i.e., is not a command). Note that keyboard
494macros (strings and vectors) are not accepted, even though they are
495considered commands, because they are not functions.
8db970a4
RS
496
497@cindex record command history
498If @var{record-flag} is non-@code{nil}, then this command and its
499arguments are unconditionally added to the list @code{command-history}.
500Otherwise, the command is added only if it uses the minibuffer to read
501an argument. @xref{Command History}.
502@end defun
503
504@defun command-execute command &optional record-flag
505@cindex keyboard macro execution
506This function executes @var{command} as an editing command. The
507argument @var{command} must satisfy the @code{commandp} predicate; i.e.,
f142f62a 508it must be an interactively callable function or a keyboard macro.
8db970a4
RS
509
510A string or vector as @var{command} is executed with
511@code{execute-kbd-macro}. A function is passed to
512@code{call-interactively}, along with the optional @var{record-flag}.
513
514A symbol is handled by using its function definition in its place. A
515symbol with an @code{autoload} definition counts as a command if it was
516declared to stand for an interactively callable function. Such a
517definition is handled by loading the specified library and then
518rechecking the definition of the symbol.
519@end defun
520
521@deffn Command execute-extended-command prefix-argument
522@cindex read command name
523This function reads a command name from the minibuffer using
524@code{completing-read} (@pxref{Completion}). Then it uses
525@code{command-execute} to call the specified command. Whatever that
526command returns becomes the value of @code{execute-extended-command}.
527
528@cindex execute with prefix argument
f142f62a
RS
529If the command asks for a prefix argument, it receives the value
530@var{prefix-argument}. If @code{execute-extended-command} is called
531interactively, the current raw prefix argument is used for
8db970a4
RS
532@var{prefix-argument}, and thus passed on to whatever command is run.
533
534@c !!! Should this be @kindex?
535@cindex @kbd{M-x}
536@code{execute-extended-command} is the normal definition of @kbd{M-x},
537so it uses the string @w{@samp{M-x }} as a prompt. (It would be better
538to take the prompt from the events used to invoke
539@code{execute-extended-command}, but that is painful to implement.) A
540description of the value of the prefix argument, if any, also becomes
541part of the prompt.
542
543@example
544@group
545(execute-extended-command 1)
546---------- Buffer: Minibuffer ----------
b22f3a19 5471 M-x forward-word RET
8db970a4
RS
548---------- Buffer: Minibuffer ----------
549 @result{} t
550@end group
551@end example
552@end deffn
553
554@defun interactive-p
555This function returns @code{t} if the containing function (the one that
556called @code{interactive-p}) was called interactively, with the function
557@code{call-interactively}. (It makes no difference whether
558@code{call-interactively} was called from Lisp or directly from the
f142f62a
RS
559editor command loop.) If the containing function was called by Lisp
560evaluation (or with @code{apply} or @code{funcall}), then it was not
561called interactively.
8db970a4 562
f142f62a 563The most common use of @code{interactive-p} is for deciding whether to
8db970a4
RS
564print an informative message. As a special exception,
565@code{interactive-p} returns @code{nil} whenever a keyboard macro is
566being run. This is to suppress the informative messages and speed
567execution of the macro.
568
569For example:
570
571@example
572@group
573(defun foo ()
574 (interactive)
575 (and (interactive-p)
576 (message "foo")))
577 @result{} foo
578@end group
579
580@group
581(defun bar ()
582 (interactive)
583 (setq foobar (list (foo) (interactive-p))))
584 @result{} bar
585@end group
586
587@group
588;; @r{Type @kbd{M-x foo}.}
589 @print{} foo
590@end group
591
592@group
593;; @r{Type @kbd{M-x bar}.}
594;; @r{This does not print anything.}
595@end group
596
597@group
598foobar
599 @result{} (nil t)
600@end group
601@end example
602@end defun
603
604@node Command Loop Info
605@comment node-name, next, previous, up
606@section Information from the Command Loop
607
608The editor command loop sets several Lisp variables to keep status
609records for itself and for commands that are run.
610
611@defvar last-command
612This variable records the name of the previous command executed by the
613command loop (the one before the current command). Normally the value
614is a symbol with a function definition, but this is not guaranteed.
615
f142f62a
RS
616The value is copied from @code{this-command} when a command returns to
617the command loop, except when the command specifies a prefix argument
618for the following command.
8db970a4
RS
619@end defvar
620
621@defvar this-command
622@cindex current command
623This variable records the name of the command now being executed by
624the editor command loop. Like @code{last-command}, it is normally a symbol
625with a function definition.
626
f142f62a
RS
627The command loop sets this variable just before running a command, and
628copies its value into @code{last-command} when the command finishes
629(unless the command specifies a prefix argument for the following
630command).
8db970a4
RS
631
632@cindex kill command repetition
f142f62a
RS
633Some commands set this variable during their execution, as a flag for
634whatever command runs next. In particular, the functions that kill text
635set @code{this-command} to @code{kill-region} so that any kill commands
636immediately following will know to append the killed text to the
637previous kill.
8db970a4
RS
638@end defvar
639
640If you do not want a particular command to be recognized as the previous
641command in the case where it got an error, you must code that command to
642prevent this. One way is to set @code{this-command} to @code{t} at the
643beginning of the command, and set @code{this-command} back to its proper
644value at the end, like this:
645
646@example
647(defun foo (args@dots{})
648 (interactive @dots{})
649 (let ((old-this-command this-command))
650 (setq this-command t)
651 @r{@dots{}do the work@dots{}}
652 (setq this-command old-this-command)))
653@end example
654
655@defun this-command-keys
656This function returns a string or vector containing the key sequence
657that invoked the present command, plus any previous commands that
658generated the prefix argument for this command. The value is a string
659if all those events were characters. @xref{Input Events}.
660
661@example
662@group
663(this-command-keys)
b22f3a19 664;; @r{Now use @kbd{C-u C-x C-e} to evaluate that.}
8db970a4
RS
665 @result{} "^U^X^E"
666@end group
667@end example
668@end defun
669
670@defvar last-nonmenu-event
671This variable holds the last input event read as part of a key
f142f62a 672sequence, not counting events resulting from mouse menus.
8db970a4
RS
673
674One use of this variable is to figure out a good default location to
675pop up another menu.
676@end defvar
677
678@defvar last-command-event
679@defvarx last-command-char
680This variable is set to the last input event that was read by the
681command loop as part of a command. The principal use of this variable
682is in @code{self-insert-command}, which uses it to decide which
683character to insert.
684
685@example
686@group
f142f62a 687last-command-event
b22f3a19 688;; @r{Now use @kbd{C-u C-x C-e} to evaluate that.}
8db970a4
RS
689 @result{} 5
690@end group
691@end example
692
693@noindent
694The value is 5 because that is the @sc{ASCII} code for @kbd{C-e}.
695
696The alias @code{last-command-char} exists for compatibility with
697Emacs version 18.
698@end defvar
699
700@c Emacs 19 feature
701@defvar last-event-frame
702This variable records which frame the last input event was directed to.
703Usually this is the frame that was selected when the event was
704generated, but if that frame has redirected input focus to another
705frame, the value is the frame to which the event was redirected.
706@xref{Input Focus}.
707@end defvar
708
709@defvar echo-keystrokes
710This variable determines how much time should elapse before command
711characters echo. Its value must be an integer, which specifies the
712number of seconds to wait before echoing. If the user types a prefix
f142f62a
RS
713key (such as @kbd{C-x}) and then delays this many seconds before
714continuing, the prefix key is echoed in the echo area. Any subsequent
715characters in the same command will be echoed as well.
8db970a4
RS
716
717If the value is zero, then command input is not echoed.
718@end defvar
719
720@node Input Events
721@section Input Events
722@cindex events
723@cindex input events
724
725The Emacs command loop reads a sequence of @dfn{input events} that
726represent keyboard or mouse activity. The events for keyboard activity
727are characters or symbols; mouse events are always lists. This section
728describes the representation and meaning of input events in detail.
729
8db970a4
RS
730@defun eventp object
731This function returns non-@code{nil} if @var{event} is an input event.
732@end defun
733
734@menu
735* Keyboard Events:: Ordinary characters--keys with symbols on them.
736* Function Keys:: Function keys--keys with names, not symbols.
f142f62a 737* Mouse Events:: Overview of mouse events.
8db970a4
RS
738* Click Events:: Pushing and releasing a mouse button.
739* Drag Events:: Moving the mouse before releasing the button.
740* Button-Down Events:: A button was pushed and not yet released.
741* Repeat Events:: Double and triple click (or drag, or down).
742* Motion Events:: Just moving the mouse, not pushing a button.
743* Focus Events:: Moving the mouse between frames.
744* Event Examples:: Examples of the lists for mouse events.
745* Classifying Events:: Finding the modifier keys in an event symbol.
746 Event types.
747* Accessing Events:: Functions to extract info from events.
748* Strings of Events:: Special considerations for putting
749 keyboard character events in a string.
750@end menu
751
752@node Keyboard Events
753@subsection Keyboard Events
754
755There are two kinds of input you can get from the keyboard: ordinary
756keys, and function keys. Ordinary keys correspond to characters; the
757events they generate are represented in Lisp as characters. In Emacs
f142f62a
RS
758versions 18 and earlier, characters were the only events. The event
759type of a character event is the character itself (an integer);
760see @ref{Classifying Events}.
8db970a4
RS
761
762@cindex modifier bits (of input character)
763@cindex basic code (of input character)
764An input character event consists of a @dfn{basic code} between 0 and
765255, plus any or all of these @dfn{modifier bits}:
766
767@table @asis
768@item meta
769The 2**23 bit in the character code indicates a character
770typed with the meta key held down.
771
772@item control
773The 2**22 bit in the character code indicates a non-@sc{ASCII}
774control character.
775
776@sc{ASCII} control characters such as @kbd{C-a} have special basic
777codes of their own, so Emacs needs no special bit to indicate them.
778Thus, the code for @kbd{C-a} is just 1.
779
780But if you type a control combination not in @sc{ASCII}, such as
781@kbd{%} with the control key, the numeric value you get is the code
782for @kbd{%} plus 2**22 (assuming the terminal supports non-@sc{ASCII}
783control characters).
784
785@item shift
786The 2**21 bit in the character code indicates an @sc{ASCII} control
787character typed with the shift key held down.
788
789For letters, the basic code indicates upper versus lower case; for
790digits and punctuation, the shift key selects an entirely different
791character with a different basic code. In order to keep within
792the @sc{ASCII} character set whenever possible, Emacs avoids using
793the 2**21 bit for those characters.
794
795However, @sc{ASCII} provides no way to distinguish @kbd{C-A} from
f142f62a 796@kbd{C-a}, so Emacs uses the 2**21 bit in @kbd{C-A} and not in
8db970a4
RS
797@kbd{C-a}.
798
799@item hyper
800The 2**20 bit in the character code indicates a character
801typed with the hyper key held down.
802
803@item super
804The 2**19 bit in the character code indicates a character
805typed with the super key held down.
806
807@item alt
808The 2**18 bit in the character code indicates a character typed with
809the alt key held down. (On some terminals, the key labeled @key{ALT}
810is actually the meta key.)
811@end table
812
813 In the future, Emacs may support a larger range of basic codes. We
814may also move the modifier bits to larger bit numbers. Therefore, you
815should avoid mentioning specific bit numbers in your program.
816Instead, the way to test the modifier bits of a character is with the
817function @code{event-modifiers} (@pxref{Classifying Events}).
818
819@node Function Keys
820@subsection Function Keys
821
822@cindex function keys
b22f3a19 823Most keyboards also have @dfn{function keys}---keys that have names or
8db970a4 824symbols that are not characters. Function keys are represented in Lisp
f142f62a
RS
825as symbols; the symbol's name is the function key's label, in lower
826case. For example, pressing a key labeled @key{F1} places the symbol
827@code{f1} in the input stream.
8db970a4 828
f142f62a
RS
829The event type of a function key event is the event symbol itself.
830@xref{Classifying Events}.
8db970a4 831
b22f3a19 832Here are a few special cases in the symbol-naming convention for
8db970a4
RS
833function keys:
834
835@table @asis
836@item @code{backspace}, @code{tab}, @code{newline}, @code{return}, @code{delete}
837These keys correspond to common @sc{ASCII} control characters that have
838special keys on most keyboards.
839
f142f62a
RS
840In @sc{ASCII}, @kbd{C-i} and @key{TAB} are the same character. If the
841terminal can distinguish between them, Emacs conveys the distinction to
842Lisp programs by representing the former as the integer 9, and the
843latter as the symbol @code{tab}.
8db970a4
RS
844
845Most of the time, it's not useful to distinguish the two. So normally
f142f62a
RS
846@code{function-key-map} is set up to map @code{tab} into 9. Thus, a key
847binding for character code 9 (the character @kbd{C-i}) also applies to
848@code{tab}. Likewise for the other symbols in this group. The function
849@code{read-char} likewise converts these events into characters.
8db970a4
RS
850
851In @sc{ASCII}, @key{BS} is really @kbd{C-h}. But @code{backspace}
852converts into the character code 127 (@key{DEL}), not into code 8
853(@key{BS}). This is what most users prefer.
854
b22f3a19
RS
855@item @code{left}, @code{up}, @code{right}, @code{down}
856Cursor arrow keys
8db970a4
RS
857@item @code{kp-add}, @code{kp-decimal}, @code{kp-divide}, @dots{}
858Keypad keys (to the right of the regular keyboard).
859@item @code{kp-0}, @code{kp-1}, @dots{}
860Keypad keys with digits.
861@item @code{kp-f1}, @code{kp-f2}, @code{kp-f3}, @code{kp-f4}
862Keypad PF keys.
b22f3a19
RS
863@item @code{kp-home}, @code{kp-left}, @code{kp-up}, @code{kp-right}, @code{kp-down}
864Keypad arrow keys. Emacs normally translates these
865into the non-keypad keys @code{home}, @code{left}, @dots{}
866@item @code{kp-prior}, @code{kp-next}, @code{kp-end}, @code{kp-begin}, @code{kp-insert}, @code{kp-delete}
867Additional keypad duplicates of keys ordinarily found elsewhere. Emacs
868normally translates these into the like-named non-keypad keys.
8db970a4
RS
869@end table
870
b22f3a19
RS
871You can use the modifier keys @key{ALT}, @key{CTRL}, @key{HYPER},
872@key{META}, @key{SHIFT}, and @key{SUPER} with function keys. The way to
873represent them is with prefixes in the symbol name:
8db970a4
RS
874
875@table @samp
876@item A-
877The alt modifier.
878@item C-
879The control modifier.
880@item H-
881The hyper modifier.
882@item M-
883The meta modifier.
884@item S-
885The shift modifier.
886@item s-
887The super modifier.
888@end table
889
890Thus, the symbol for the key @key{F3} with @key{META} held down is
8609b2e2 891@code{M-f3}. When you use more than one prefix, we recommend you
f142f62a
RS
892write them in alphabetical order; but the order does not matter in
893arguments to the key-binding lookup and modification functions.
894
895@node Mouse Events
896@subsection Mouse Events
897
898Emacs supports four kinds of mouse events: click events, drag events,
899button-down events, and motion events. All mouse events are represented
900as lists. The @sc{car} of the list is the event type; this says which
901mouse button was involved, and which modifier keys were used with it.
902The event type can also distinguish double or triple button presses
903(@pxref{Repeat Events}). The rest of the list elements give position
904and time information.
905
906For key lookup, only the event type matters: two events of the same type
907necessarily run the same command. The command can access the full
908values of these events using the @samp{e} interactive code.
909@xref{Interactive Codes}.
910
911A key sequence that starts with a mouse event is read using the keymaps
912of the buffer in the window that the mouse was in, not the current
913buffer. This does not imply that clicking in a window selects that
914window or its buffer---that is entirely under the control of the command
915binding of the key sequence.
8db970a4
RS
916
917@node Click Events
918@subsection Click Events
919@cindex click event
920@cindex mouse click event
921
922When the user presses a mouse button and releases it at the same
923location, that generates a @dfn{click} event. Mouse click events have
924this form:
925
926@example
927(@var{event-type}
f142f62a 928 (@var{window} @var{buffer-pos} (@var{x} . @var{y}) @var{timestamp})
8db970a4
RS
929 @var{click-count})
930@end example
931
932Here is what the elements normally mean:
933
f142f62a
RS
934@table @asis
935@item @var{event-type}
8db970a4
RS
936This is a symbol that indicates which mouse button was used. It is
937one of the symbols @code{mouse-1}, @code{mouse-2}, @dots{}, where the
f142f62a 938buttons are numbered left to right.
8db970a4
RS
939
940You can also use prefixes @samp{A-}, @samp{C-}, @samp{H-}, @samp{M-},
941@samp{S-} and @samp{s-} for modifiers alt, control, hyper, meta, shift
942and super, just as you would with function keys.
943
944This symbol also serves as the event type of the event. Key bindings
945describe events by their types; thus, if there is a key binding for
946@code{mouse-1}, that binding would apply to all events whose
947@var{event-type} is @code{mouse-1}.
948
f142f62a 949@item @var{window}
8db970a4
RS
950This is the window in which the click occurred.
951
f142f62a 952@item @var{x}, @var{y}
b22f3a19
RS
953These are the pixel-denominated coordinates of the click, relative to
954the top left corner of @var{window}, which is @code{(0 . 0)}.
8db970a4 955
f142f62a 956@item @var{buffer-pos}
8db970a4
RS
957This is the buffer position of the character clicked on.
958
f142f62a 959@item @var{timestamp}
8db970a4
RS
960This is the time at which the event occurred, in milliseconds. (Since
961this value wraps around the entire range of Emacs Lisp integers in about
962five hours, it is useful only for relating the times of nearby events.)
963
f142f62a 964@item @var{click-count}
8db970a4
RS
965This is the number of rapid repeated presses so far of the same mouse
966button. @xref{Repeat Events}.
967@end table
968
f142f62a
RS
969The meanings of @var{buffer-pos}, @var{x} and @var{y} are somewhat
970different when the event location is in a special part of the screen,
971such as the mode line or a scroll bar.
8db970a4
RS
972
973If the location is in a scroll bar, then @var{buffer-pos} is the symbol
974@code{vertical-scroll-bar} or @code{horizontal-scroll-bar}, and the pair
975@code{(@var{x} . @var{y})} is replaced with a pair @code{(@var{portion}
976. @var{whole})}, where @var{portion} is the distance of the click from
977the top or left end of the scroll bar, and @var{whole} is the length of
978the entire scroll bar.
979
980If the position is on a mode line or the vertical line separating
981@var{window} from its neighbor to the right, then @var{buffer-pos} is
982the symbol @code{mode-line} or @code{vertical-line}. For the mode line,
f142f62a
RS
983@var{y} does not have meaningful data. For the vertical line, @var{x}
984does not have meaningful data.
8db970a4 985
b22f3a19
RS
986In one special case, @var{buffer-pos} is a list containing a symbol (one
987of the symbols listed above) instead of just the symbol. This happens
988after the imaginary prefix keys for the event are inserted into the
989input stream. @xref{Key Sequence Input}.
8db970a4
RS
990
991@node Drag Events
992@subsection Drag Events
993@cindex drag event
994@cindex mouse drag event
995
996With Emacs, you can have a drag event without even changing your
997clothes. A @dfn{drag event} happens every time the user presses a mouse
998button and then moves the mouse to a different character position before
999releasing the button. Like all mouse events, drag events are
1000represented in Lisp as lists. The lists record both the starting mouse
1001position and the final position, like this:
1002
1003@example
1004(@var{event-type}
f142f62a
RS
1005 (@var{window1} @var{buffer-pos1} (@var{x1} . @var{y1}) @var{timestamp1})
1006 (@var{window2} @var{buffer-pos2} (@var{x2} . @var{y2}) @var{timestamp2})
8db970a4
RS
1007 @var{click-count})
1008@end example
1009
1010For a drag event, the name of the symbol @var{event-type} contains the
1011prefix @samp{drag-}. The second and third elements of the event give
1012the starting and ending position of the drag. Aside from that, the data
1013have the same meanings as in a click event (@pxref{Click Events}). You
1014can access the second element of any mouse event in the same way, with
1015no need to distinguish drag events from others.
1016
1017The @samp{drag-} prefix follows the modifier key prefixes such as
1018@samp{C-} and @samp{M-}.
1019
b22f3a19 1020If @code{read-key-sequence} receives a drag event that has no key
8db970a4
RS
1021binding, and the corresponding click event does have a binding, it
1022changes the drag event into a click event at the drag's starting
1023position. This means that you don't have to distinguish between click
1024and drag events unless you want to.
1025
1026@node Button-Down Events
1027@subsection Button-Down Events
1028@cindex button-down event
1029
1030Click and drag events happen when the user releases a mouse button.
1031They cannot happen earlier, because there is no way to distinguish a
1032click from a drag until the button is released.
1033
1034If you want to take action as soon as a button is pressed, you need to
1035handle @dfn{button-down} events.@footnote{Button-down is the
f142f62a 1036conservative antithesis of drag.} These occur as soon as a button is
b22f3a19 1037pressed. They are represented by lists that look exactly like click
f142f62a
RS
1038events (@pxref{Click Events}), except that the @var{event-type} symbol
1039name contains the prefix @samp{down-}. The @samp{down-} prefix follows
8db970a4
RS
1040modifier key prefixes such as @samp{C-} and @samp{M-}.
1041
b22f3a19
RS
1042The function @code{read-key-sequence}, and therefore the Emacs command
1043loop as well, ignore any button-down events that don't have command
1044bindings. This means that you need not worry about defining button-down
1045events unless you want them to do something. The usual reason to define
1046a button-down event is so that you can track mouse motion (by reading
1047motion events) until the button is released. @xref{Motion Events}.
8db970a4
RS
1048
1049@node Repeat Events
1050@subsection Repeat Events
1051@cindex repeat events
1052@cindex double-click events
1053@cindex triple-click events
1054
1055If you press the same mouse button more than once in quick succession
f142f62a
RS
1056without moving the mouse, Emacs generates special @dfn{repeat} mouse
1057events for the second and subsequent presses.
8db970a4
RS
1058
1059The most common repeat events are @dfn{double-click} events. Emacs
1060generates a double-click event when you click a button twice; the event
1061happens when you release the button (as is normal for all click
1062events).
1063
1064The event type of a double-click event contains the prefix
f142f62a 1065@samp{double-}. Thus, a double click on the second mouse button with
8db970a4
RS
1066@key{meta} held down comes to the Lisp program as
1067@code{M-double-mouse-2}. If a double-click event has no binding, the
1068binding of the corresponding ordinary click event is used to execute
1069it. Thus, you need not pay attention to the double click feature
1070unless you really want to.
1071
1072When the user performs a double click, Emacs generates first an ordinary
f142f62a
RS
1073click event, and then a double-click event. Therefore, you must design
1074the command binding of the double click event to assume that the
8db970a4
RS
1075single-click command has already run. It must produce the desired
1076results of a double click, starting from the results of a single click.
1077
f142f62a
RS
1078This is convenient, if the meaning of a double click somehow ``builds
1079on'' the meaning of a single click---which is recommended user interface
1080design practice for double clicks.
8db970a4
RS
1081
1082If you click a button, then press it down again and start moving the
1083mouse with the button held down, then you get a @dfn{double-drag} event
1084when you ultimately release the button. Its event type contains
1085@samp{double-drag} instead of just @samp{drag}. If a double-drag event
1086has no binding, Emacs looks for an alternate binding as if the event
b22f3a19 1087were an ordinary drag.
8db970a4
RS
1088
1089Before the double-click or double-drag event, Emacs generates a
f142f62a
RS
1090@dfn{double-down} event when the user presses the button down for the
1091second time. Its event type contains @samp{double-down} instead of just
8db970a4
RS
1092@samp{down}. If a double-down event has no binding, Emacs looks for an
1093alternate binding as if the event were an ordinary button-down event.
f142f62a
RS
1094If it finds no binding that way either, the double-down event is
1095ignored.
8db970a4
RS
1096
1097To summarize, when you click a button and then press it again right
b22f3a19
RS
1098away, Emacs generates a down event and a click event for the first
1099click, a double-down event when you press the button again, and finally
1100either a double-click or a double-drag event.
8db970a4
RS
1101
1102If you click a button twice and then press it again, all in quick
1103succession, Emacs generates a @dfn{triple-down} event, followed by
1104either a @dfn{triple-click} or a @dfn{triple-drag}. The event types of
1105these events contain @samp{triple} instead of @samp{double}. If any
1106triple event has no binding, Emacs uses the binding that it would use
1107for the corresponding double event.
1108
f142f62a
RS
1109If you click a button three or more times and then press it again, the
1110events for the presses beyond the third are all triple events. Emacs
1111does not have separate event types for quadruple, quintuple, etc.@:
1112events. However, you can look at the event list to find out precisely
1113how many times the button was pressed.
8db970a4
RS
1114
1115@defun event-click-count event
1116This function returns the number of consecutive button presses that led
1117up to @var{event}. If @var{event} is a double-down, double-click or
1118double-drag event, the value is 2. If @var{event} is a triple event,
1119the value is 3 or greater. If @var{event} is an ordinary mouse event
1120(not a repeat event), the value is 1.
1121@end defun
1122
1123@defvar double-click-time
f142f62a
RS
1124To generate repeat events, successive mouse button presses must be at
1125the same screen position, and the number of milliseconds between
1126successive button presses must be less than the value of
8db970a4
RS
1127@code{double-click-time}. Setting @code{double-click-time} to
1128@code{nil} disables multi-click detection entirely. Setting it to
1129@code{t} removes the time limit; Emacs then detects multi-clicks by
1130position only.
1131@end defvar
1132
1133@node Motion Events
1134@subsection Motion Events
1135@cindex motion event
1136@cindex mouse motion events
1137
1138Emacs sometimes generates @dfn{mouse motion} events to describe motion
1139of the mouse without any button activity. Mouse motion events are
1140represented by lists that look like this:
1141
1142@example
1143(mouse-movement
f142f62a 1144 (@var{window} @var{buffer-pos} (@var{x} . @var{y}) @var{timestamp}))
8db970a4
RS
1145@end example
1146
1147The second element of the list describes the current position of the
1148mouse, just as in a click event (@pxref{Click Events}).
1149
1150The special form @code{track-mouse} enables generation of motion events
1151within its body. Outside of @code{track-mouse} forms, Emacs does not
1152generate events for mere motion of the mouse, and these events do not
1153appear.
1154
1155@defspec track-mouse body@dots{}
1156This special form executes @var{body}, with generation of mouse motion
1157events enabled. Typically @var{body} would use @code{read-event}
1158to read the motion events and modify the display accordingly.
1159
1160When the user releases the button, that generates a click event.
f142f62a
RS
1161Typically, @var{body} should return when it sees the click event, and
1162discard that event.
8db970a4
RS
1163@end defspec
1164
1165@node Focus Events
1166@subsection Focus Events
1167@cindex focus event
1168
1169Window systems provide general ways for the user to control which window
1170gets keyboard input. This choice of window is called the @dfn{focus}.
1171When the user does something to switch between Emacs frames, that
1172generates a @dfn{focus event}. The normal definition of a focus event,
1173in the global keymap, is to select a new frame within Emacs, as the user
1174would expect. @xref{Input Focus}.
1175
1176Focus events are represented in Lisp as lists that look like this:
1177
1178@example
1179(switch-frame @var{new-frame})
1180@end example
1181
1182@noindent
1183where @var{new-frame} is the frame switched to.
1184
b22f3a19
RS
1185Most X window managers are set up so that just moving the mouse into a
1186window is enough to set the focus there. Emacs appears to do this,
1187because it changes the cursor to solid in the new frame. However, there
1188is no need for the Lisp program to know about the focus change until
1189some other kind of input arrives. So Emacs generates a focus event only
1190when the user actually types a keyboard key or presses a mouse button in
1191the new frame; just moving the mouse between frames does not generate a
1192focus event.
8db970a4
RS
1193
1194A focus event in the middle of a key sequence would garble the
1195sequence. So Emacs never generates a focus event in the middle of a key
1196sequence. If the user changes focus in the middle of a key
1197sequence---that is, after a prefix key---then Emacs reorders the events
1198so that the focus event comes either before or after the multi-event key
1199sequence, and not within it.
1200
1201@node Event Examples
1202@subsection Event Examples
1203
1204If the user presses and releases the left mouse button over the same
1205location, that generates a sequence of events like this:
1206
1207@smallexample
1208(down-mouse-1 (#<window 18 on NEWS> 2613 (0 . 38) -864320))
1209(mouse-1 (#<window 18 on NEWS> 2613 (0 . 38) -864180))
1210@end smallexample
1211
f142f62a 1212While holding the control key down, the user might hold down the
8db970a4
RS
1213second mouse button, and drag the mouse from one line to the next.
1214That produces two events, as shown here:
1215
1216@smallexample
1217(C-down-mouse-2 (#<window 18 on NEWS> 3440 (0 . 27) -731219))
1218(C-drag-mouse-2 (#<window 18 on NEWS> 3440 (0 . 27) -731219)
1219 (#<window 18 on NEWS> 3510 (0 . 28) -729648))
1220@end smallexample
1221
f142f62a 1222While holding down the meta and shift keys, the user might press the
8db970a4 1223second mouse button on the window's mode line, and then drag the mouse
f142f62a 1224into another window. That produces a pair of events like these:
8db970a4
RS
1225
1226@smallexample
1227(M-S-down-mouse-2 (#<window 18 on NEWS> mode-line (33 . 31) -457844))
1228(M-S-drag-mouse-2 (#<window 18 on NEWS> mode-line (33 . 31) -457844)
1229 (#<window 20 on carlton-sanskrit.tex> 161 (33 . 3)
1230 -453816))
1231@end smallexample
1232
1233@node Classifying Events
1234@subsection Classifying Events
1235@cindex event type
1236
b22f3a19
RS
1237 Every event has an @dfn{event type}, which classifies the event for
1238key binding purposes. For a keyboard event, the event type equals the
1239event value; thus, the event type for a character is the character, and
1240the event type for a function key symbol is the symbol itself. For
1241events that are lists, the event type is the symbol in the @sc{car} of
1242the list. Thus, the event type is always a symbol or a character.
8db970a4
RS
1243
1244 Two events of the same type are equivalent where key bindings are
1245concerned; thus, they always run the same command. That does not
1246necessarily mean they do the same things, however, as some commands look
1247at the whole event to decide what to do. For example, some commands use
f142f62a 1248the location of a mouse event to decide where in the buffer to act.
8db970a4
RS
1249
1250 Sometimes broader classifications of events are useful. For example,
1251you might want to ask whether an event involved the @key{META} key,
1252regardless of which other key or mouse button was used.
1253
1254 The functions @code{event-modifiers} and @code{event-basic-type} are
1255provided to get such information conveniently.
1256
1257@defun event-modifiers event
f142f62a
RS
1258This function returns a list of the modifiers that @var{event} has. The
1259modifiers are symbols; they include @code{shift}, @code{control},
8db970a4 1260@code{meta}, @code{alt}, @code{hyper} and @code{super}. In addition,
f142f62a
RS
1261the modifiers list of a mouse event symbol always contains one of
1262@code{click}, @code{drag}, and @code{down}.
1263
1264The argument @var{event} may be an entire event object, or just an event
1265type.
1266
1267Here are some examples:
8db970a4
RS
1268
1269@example
1270(event-modifiers ?a)
1271 @result{} nil
1272(event-modifiers ?\C-a)
1273 @result{} (control)
1274(event-modifiers ?\C-%)
1275 @result{} (control)
1276(event-modifiers ?\C-\S-a)
1277 @result{} (control shift)
1278(event-modifiers 'f5)
1279 @result{} nil
1280(event-modifiers 's-f5)
1281 @result{} (super)
1282(event-modifiers 'M-S-f5)
1283 @result{} (meta shift)
1284(event-modifiers 'mouse-1)
1285 @result{} (click)
1286(event-modifiers 'down-mouse-1)
1287 @result{} (down)
1288@end example
1289
1290The modifiers list for a click event explicitly contains @code{click},
1291but the event symbol name itself does not contain @samp{click}.
1292@end defun
1293
1294@defun event-basic-type event
1295This function returns the key or mouse button that @var{event}
1296describes, with all modifiers removed. For example:
1297
1298@example
1299(event-basic-type ?a)
1300 @result{} 97
1301(event-basic-type ?A)
1302 @result{} 97
1303(event-basic-type ?\C-a)
1304 @result{} 97
1305(event-basic-type ?\C-\S-a)
1306 @result{} 97
1307(event-basic-type 'f5)
1308 @result{} f5
1309(event-basic-type 's-f5)
1310 @result{} f5
1311(event-basic-type 'M-S-f5)
1312 @result{} f5
1313(event-basic-type 'down-mouse-1)
1314 @result{} mouse-1
1315@end example
1316@end defun
1317
1318@defun mouse-movement-p object
1319This function returns non-@code{nil} if @var{object} is a mouse movement
1320event.
1321@end defun
1322
1323@node Accessing Events
1324@subsection Accessing Events
1325
1326 This section describes convenient functions for accessing the data in
f142f62a 1327a mouse button or motion event.
8db970a4 1328
f142f62a 1329 These two functions return the starting or ending position of a
8db970a4
RS
1330mouse-button event. The position is a list of this form:
1331
f142f62a 1332@example
b22f3a19 1333(@var{window} @var{buffer-position} (@var{x} . @var{y}) @var{timestamp})
f142f62a 1334@end example
8db970a4
RS
1335
1336@defun event-start event
1337This returns the starting position of @var{event}.
1338
1339If @var{event} is a click or button-down event, this returns the
1340location of the event. If @var{event} is a drag event, this returns the
1341drag's starting position.
1342@end defun
1343
1344@defun event-end event
1345This returns the ending position of @var{event}.
1346
1347If @var{event} is a drag event, this returns the position where the user
1348released the mouse button. If @var{event} is a click or button-down
1349event, the value is actually the starting position, which is the only
1350position such events have.
1351@end defun
1352
b22f3a19
RS
1353 These four functions take a position as described above, and return
1354various parts of it.
8db970a4
RS
1355
1356@defun posn-window position
1357Return the window that @var{position} is in.
1358@end defun
1359
1360@defun posn-point position
f142f62a 1361Return the buffer position in @var{position}. This is an integer.
8db970a4
RS
1362@end defun
1363
1364@defun posn-x-y position
b22f3a19
RS
1365Return the pixel-based x and y coordinates in @var{position}, as a cons
1366cell @code{(@var{x} . @var{y})}.
8db970a4
RS
1367@end defun
1368
1369@defun posn-col-row position
f142f62a 1370Return the row and column (in units of characters) of @var{position}, as
8db970a4
RS
1371a cons cell @code{(@var{col} . @var{row})}. These are computed from the
1372@var{x} and @var{y} values actually found in @var{position}.
1373@end defun
1374
1375@defun posn-timestamp position
f142f62a 1376Return the timestamp in @var{position}.
8db970a4
RS
1377@end defun
1378
b22f3a19
RS
1379@defun scroll-bar-event-ratio event
1380This function returns the fractional vertical position of a scroll bar
1381event within the scroll bar. The value is a cons cell
1382@code{(@var{portion} . @var{whole})} containing two integers whose ratio
1383is the fractional position.
1384@end defun
1385
8db970a4 1386@defun scroll-bar-scale ratio total
b22f3a19
RS
1387This function multiplies (in effect) @var{ratio} by @var{total},
1388rounding the result to an integer. The argument @var{ratio} is not a
1389number, but rather a pair @code{(@var{num} . @var{denom})}---typically a
1390value returned by @code{scroll-bar-event-ratio}.
8db970a4 1391
f142f62a
RS
1392This function is handy for scaling a position on a scroll bar into a
1393buffer position. Here's how to do that:
8db970a4
RS
1394
1395@example
1396(+ (point-min)
1397 (scroll-bar-scale
b22f3a19 1398 (posn-x-y (event-start event))
8db970a4
RS
1399 (- (point-max) (point-min))))
1400@end example
b22f3a19
RS
1401
1402Recall that scroll bar events have two integers forming ratio in place
1403of a pair of x and y coordinates.
8db970a4
RS
1404@end defun
1405
1406@node Strings of Events
1407@subsection Putting Keyboard Events in Strings
1408
1409 In most of the places where strings are used, we conceptualize the
1410string as containing text characters---the same kind of characters found
b22f3a19 1411in buffers or files. Occasionally Lisp programs use strings that
8db970a4
RS
1412conceptually contain keyboard characters; for example, they may be key
1413sequences or keyboard macro definitions. There are special rules for
1414how to put keyboard characters into a string, because they are not
1415limited to the range of 0 to 255 as text characters are.
1416
1417 A keyboard character typed using the @key{META} key is called a
1418@dfn{meta character}. The numeric code for such an event includes the
14192**23 bit; it does not even come close to fitting in a string. However,
1420earlier Emacs versions used a different representation for these
1421characters, which gave them codes in the range of 128 to 255. That did
1422fit in a string, and many Lisp programs contain string constants that
1423use @samp{\M-} to express meta characters, especially as the argument to
1424@code{define-key} and similar functions.
1425
f142f62a 1426 We provide backward compatibility to run those programs using special
8db970a4
RS
1427rules for how to put a keyboard character event in a string. Here are
1428the rules:
1429
1430@itemize @bullet
1431@item
f142f62a
RS
1432If the keyboard character value is in the range of 0 to 127, it can go
1433in the string unchanged.
8db970a4
RS
1434
1435@item
f142f62a
RS
1436The meta variants of those characters, with codes in the range of 2**23
1437to 2**23+127, can also go in the string, but you must change their
1438numeric values. You must set the 2**7 bit instead of the 2**23 bit,
1439resulting in a value between 128 and 255.
8db970a4
RS
1440
1441@item
1442Other keyboard character events cannot fit in a string. This includes
1443keyboard events in the range of 128 to 255.
1444@end itemize
1445
1446 Functions such as @code{read-key-sequence} that can construct strings
f142f62a
RS
1447of keyboard input characters follow these rules. They construct vectors
1448instead of strings, when the events won't fit in a string.
8db970a4
RS
1449
1450 When you use the read syntax @samp{\M-} in a string, it produces a
1451code in the range of 128 to 255---the same code that you get if you
1452modify the corresponding keyboard event to put it in the string. Thus,
1453meta events in strings work consistently regardless of how they get into
1454the strings.
1455
8db970a4
RS
1456 The reason we changed the representation of meta characters as
1457keyboard events is to make room for basic character codes beyond 127,
1458and support meta variants of such larger character codes.
1459
f142f62a
RS
1460 New programs can avoid dealing with these special compatibility rules
1461by using vectors instead of strings for key sequences when there is any
1462possibility that they might contain meta characters, and by using
1463@code{listify-key-sequence} to access a string of events.
1464
1465@defun listify-key-sequence key
1466This function converts the string or vector @var{key} to a list of
b22f3a19 1467events, which you can put in @code{unread-command-events}. Converting a
f142f62a
RS
1468vector is simple, but converting a string is tricky because of the
1469special representation used for meta characters in a string.
1470@end defun
1471
8db970a4
RS
1472@node Reading Input
1473@section Reading Input
1474
1475 The editor command loop reads keyboard input using the function
1476@code{read-key-sequence}, which uses @code{read-event}. These and other
1477functions for keyboard input are also available for use in Lisp
1478programs. See also @code{momentary-string-display} in @ref{Temporary
1479Displays}, and @code{sit-for} in @ref{Waiting}. @xref{Terminal Input},
1480for functions and variables for controlling terminal input modes and
1481debugging terminal input.
1482
1483 For higher-level input facilities, see @ref{Minibuffers}.
1484
1485@menu
1486* Key Sequence Input:: How to read one key sequence.
1487* Reading One Event:: How to read just one event.
1488* Quoted Character Input:: Asking the user to specify a character.
f142f62a 1489* Event Input Misc:: How to reread or throw away input events.
8db970a4
RS
1490@end menu
1491
1492@node Key Sequence Input
1493@subsection Key Sequence Input
1494@cindex key sequence input
1495
1496 The command loop reads input a key sequence at a time, by calling
1497@code{read-key-sequence}. Lisp programs can also call this function;
1498for example, @code{describe-key} uses it to read the key to describe.
1499
1500@defun read-key-sequence prompt
1501@cindex key sequence
1502This function reads a key sequence and returns it as a string or
1503vector. It keeps reading events until it has accumulated a full key
1504sequence; that is, enough to specify a non-prefix command using the
1505currently active keymaps.
1506
1507If the events are all characters and all can fit in a string, then
1508@code{read-key-sequence} returns a string (@pxref{Strings of Events}).
1509Otherwise, it returns a vector, since a vector can hold all kinds of
1510events---characters, symbols, and lists. The elements of the string or
1511vector are the events in the key sequence.
1512
f142f62a
RS
1513The function @code{read-key-sequence} suppresses quitting: @kbd{C-g}
1514typed while reading with this function works like any other character,
1515and does not set @code{quit-flag}. @xref{Quitting}.
8db970a4
RS
1516
1517The argument @var{prompt} is either a string to be displayed in the echo
1518area as a prompt, or @code{nil}, meaning not to display a prompt.
1519
1520In the example below, the prompt @samp{?} is displayed in the echo area,
1521and the user types @kbd{C-x C-f}.
1522
1523@example
1524(read-key-sequence "?")
1525
1526@group
1527---------- Echo Area ----------
1528?@kbd{C-x C-f}
1529---------- Echo Area ----------
1530
1531 @result{} "^X^F"
1532@end group
1533@end example
1534@end defun
1535
1536@defvar num-input-keys
1537@c Emacs 19 feature
1538This variable's value is the number of key sequences processed so far in
1539this Emacs session. This includes key sequences read from the terminal
1540and key sequences read from keyboard macros being executed.
1541@end defvar
1542
1543@cindex upper case key sequence
1544@cindex downcasing in @code{lookup-key}
b22f3a19
RS
1545If an input character is an upper-case letter and has no key binding,
1546but its lower-case equivalent has one, then @code{read-key-sequence}
8db970a4
RS
1547converts the character to lower case. Note that @code{lookup-key} does
1548not perform case conversion in this way.
1549
1550The function @code{read-key-sequence} also transforms some mouse events.
1551It converts unbound drag events into click events, and discards unbound
1552button-down events entirely. It also reshuffles focus events so that they
1553never appear in a key sequence with any other events.
1554
1555When mouse events occur in special parts of a window, such as a mode
f142f62a
RS
1556line or a scroll bar, the event type shows nothing special---it is the
1557same symbol that would normally represent that combination of mouse
1558button and modifier keys. The information about the window part is
1559kept elsewhere in the event---in the coordinates. But
1560@code{read-key-sequence} translates this information into imaginary
1561prefix keys, all of which are symbols: @code{mode-line},
1562@code{vertical-line}, @code{horizontal-scroll-bar} and
8db970a4
RS
1563@code{vertical-scroll-bar}.
1564
f142f62a
RS
1565You can define meanings for mouse clicks in special window parts by
1566defining key sequences using these imaginary prefix keys.
1567
8db970a4 1568For example, if you call @code{read-key-sequence} and then click the
f142f62a 1569mouse on the window's mode line, you get an event like this:
8db970a4 1570
f142f62a 1571@example
8db970a4
RS
1572(read-key-sequence "Click on the mode line: ")
1573 @result{} [mode-line
f142f62a
RS
1574 (mouse-1
1575 (#<window 6 on NEWS> mode-line
1576 (40 . 63) 5959987))]
1577@end example
8db970a4
RS
1578
1579@node Reading One Event
1580@subsection Reading One Event
1581
b22f3a19 1582 The lowest level functions for command input are those that read a
8db970a4
RS
1583single event.
1584
1585@defun read-event
1586This function reads and returns the next event of command input, waiting
1587if necessary until an event is available. Events can come directly from
1588the user or from a keyboard macro.
1589
1590The function @code{read-event} does not display any message to indicate
1591it is waiting for input; use @code{message} first, if you wish to
1592display one. If you have not displayed a message, @code{read-event}
f142f62a 1593prompts by echoing: it displays descriptions of the events that led to
8db970a4
RS
1594or were read by the current command. @xref{The Echo Area}.
1595
1596If @code{cursor-in-echo-area} is non-@code{nil}, then @code{read-event}
1597moves the cursor temporarily to the echo area, to the end of any message
1598displayed there. Otherwise @code{read-event} does not move the cursor.
8db970a4
RS
1599
1600Here is what happens if you call @code{read-event} and then press the
1601right-arrow function key:
1602
1603@example
1604@group
1605(read-event)
1606 @result{} right
1607@end group
1608@end example
f142f62a 1609@end defun
8db970a4
RS
1610
1611@defun read-char
1612This function reads and returns a character of command input. It
f142f62a 1613discards any events that are not characters, until it gets a character.
8db970a4 1614
f142f62a
RS
1615In the first example, the user types the character @kbd{1} (@sc{ASCII}
1616code 49). The second example shows a keyboard macro definition that
1617calls @code{read-char} from the minibuffer using @code{eval-expression}.
1618@code{read-char} reads the keyboard macro's very next character, which
1619is @kbd{1}. Then @code{eval-expression} displays its return value in
1620the echo area.
8db970a4
RS
1621
1622@example
1623@group
1624(read-char)
1625 @result{} 49
1626@end group
1627
1628@group
1629(symbol-function 'foo)
1630 @result{} "^[^[(read-char)^M1"
1631@end group
1632@group
f142f62a 1633(execute-kbd-macro 'foo)
8db970a4
RS
1634 @print{} 49
1635 @result{} nil
1636@end group
1637@end example
1638@end defun
1639
1640@node Quoted Character Input
1641@subsection Quoted Character Input
1642@cindex quoted character input
1643
b22f3a19
RS
1644 You can use the function @code{read-quoted-char} to ask the user to
1645specify a character, and allow the user to specify a control or meta
1646character conveniently, either literally or as an octal character code.
1647The command @code{quoted-insert} uses this function.
8db970a4
RS
1648
1649@defun read-quoted-char &optional prompt
1650@cindex octal character input
1651@cindex control characters, reading
1652@cindex nonprinting characters, reading
1653This function is like @code{read-char}, except that if the first
1654character read is an octal digit (0-7), it reads up to two more octal digits
1655(but stopping if a non-octal digit is found) and returns the
f142f62a 1656character represented by those digits in octal.
8db970a4
RS
1657
1658Quitting is suppressed when the first character is read, so that the
1659user can enter a @kbd{C-g}. @xref{Quitting}.
1660
1661If @var{prompt} is supplied, it specifies a string for prompting the
f142f62a 1662user. The prompt string is always displayed in the echo area, followed
8db970a4
RS
1663by a single @samp{-}.
1664
1665In the following example, the user types in the octal number 177 (which
1666is 127 in decimal).
1667
1668@example
1669(read-quoted-char "What character")
1670
1671@group
1672---------- Echo Area ----------
1673What character-@kbd{177}
1674---------- Echo Area ----------
1675
1676 @result{} 127
1677@end group
1678@end example
1679@end defun
1680
b22f3a19 1681@need 2000
f142f62a
RS
1682@node Event Input Misc
1683@subsection Miscellaneous Event Input Features
1684
1685This section describes how to ``peek ahead'' at events without using
1686them up, how to check for pending input, and how to discard pending
1687input.
8db970a4
RS
1688
1689@defvar unread-command-events
1690@cindex next input
1691@cindex peeking at input
1692This variable holds a list of events waiting to be read as command
f142f62a
RS
1693input. The events are used in the order they appear in the list, and
1694removed one by one as they are used.
8db970a4 1695
f142f62a
RS
1696The variable is needed because in some cases a function reads a event
1697and then decides not to use it. Storing the event in this variable
1698causes it to be processed normally, by the command loop or by the
1699functions to read command input.
8db970a4
RS
1700
1701@cindex prefix argument unreading
1702For example, the function that implements numeric prefix arguments reads
1703any number of digits. When it finds a non-digit event, it must unread
1704the event so that it can be read normally by the command loop.
f142f62a
RS
1705Likewise, incremental search uses this feature to unread events with no
1706special meaning in a search, because these events should exit the search
1707and then execute normally.
1708
b22f3a19
RS
1709The reliable and easy way to extract events from a key sequence so as to
1710put them in @code{unread-command-events} is to use
f142f62a 1711@code{listify-key-sequence} (@pxref{Strings of Events}).
8db970a4
RS
1712@end defvar
1713
1714@defvar unread-command-char
1715This variable holds a character to be read as command input.
1716A value of -1 means ``empty''.
1717
f142f62a 1718This variable is mostly obsolete now that you can use
8db970a4
RS
1719@code{unread-command-events} instead; it exists only to support programs
1720written for Emacs versions 18 and earlier.
1721@end defvar
1722
8db970a4
RS
1723@defun input-pending-p
1724@cindex waiting for command key input
1725This function determines whether any command input is currently
1726available to be read. It returns immediately, with value @code{t} if
f142f62a
RS
1727there is available input, @code{nil} otherwise. On rare occasions it
1728may return @code{t} when no input is available.
8db970a4
RS
1729@end defun
1730
1731@defvar last-input-event
f142f62a 1732This variable records the last terminal input event read, whether
8db970a4
RS
1733as part of a command or explicitly by a Lisp program.
1734
f142f62a
RS
1735In the example below, the Lisp program reads the character @kbd{1},
1736@sc{ASCII} code 49. It becomes the value of @code{last-input-event},
8db970a4 1737while @kbd{C-e} (from the @kbd{C-x C-e} command used to evaluate this
f142f62a 1738expression) remains the value of @code{last-command-event}.
8db970a4
RS
1739
1740@example
1741@group
1742(progn (print (read-char))
f142f62a
RS
1743 (print last-command-event)
1744 last-input-event)
8db970a4
RS
1745 @print{} 49
1746 @print{} 5
1747 @result{} 49
1748@end group
1749@end example
1750
f142f62a 1751@vindex last-input-char
8db970a4
RS
1752The alias @code{last-input-char} exists for compatibility with
1753Emacs version 18.
1754@end defvar
1755
1756@defun discard-input
1757@cindex flush input
1758@cindex discard input
1759@cindex terminate keyboard macro
1760This function discards the contents of the terminal input buffer and
1761cancels any keyboard macro that might be in the process of definition.
1762It returns @code{nil}.
1763
1764In the following example, the user may type a number of characters right
1765after starting the evaluation of the form. After the @code{sleep-for}
f142f62a
RS
1766finishes sleeping, @code{discard-input} discards any characters typed
1767during the sleep.
8db970a4
RS
1768
1769@example
1770(progn (sleep-for 2)
f142f62a 1771 (discard-input))
8db970a4
RS
1772 @result{} nil
1773@end example
1774@end defun
1775
1776@node Waiting
1777@section Waiting for Elapsed Time or Input
1778@cindex pausing
1779@cindex waiting
1780
f142f62a
RS
1781 The wait functions are designed to wait for a certain amount of time
1782to pass or until there is input. For example, you may wish to pause in
1783the middle of a computation to allow the user time to view the display.
1784@code{sit-for} pauses and updates the screen, and returns immediately if
1785input comes in, while @code{sleep-for} pauses without updating the
1786screen.
8db970a4
RS
1787
1788@defun sit-for seconds &optional millisec nodisp
1789This function performs redisplay (provided there is no pending input
1790from the user), then waits @var{seconds} seconds, or until input is
f142f62a
RS
1791available. The value is @code{t} if @code{sit-for} waited the full
1792time with no input arriving (see @code{input-pending-p} in @ref{Event
1793Input Misc}). Otherwise, the value is @code{nil}.
8db970a4
RS
1794
1795@c Emacs 19 feature ??? maybe not working yet
1796The optional argument @var{millisec} specifies an additional waiting
1797period measured in milliseconds. This adds to the period specified by
1798@var{seconds}. Not all operating systems support waiting periods other
1799than multiples of a second; on those that do not, you get an error if
1800you specify nonzero @var{millisec}.
1801
1802@cindex forcing redisplay
1803Redisplay is always preempted if input arrives, and does not happen at
1804all if input is available before it starts. Thus, there is no way to
1805force screen updating if there is pending input; however, if there is no
1806input pending, you can force an update with no delay by using
1807@code{(sit-for 0)}.
1808
1809If @var{nodisp} is non-@code{nil}, then @code{sit-for} does not
1810redisplay, but it still returns as soon as input is available (or when
1811the timeout elapses).
1812
1813The usual purpose of @code{sit-for} is to give the user time to read
1814text that you display.
1815@end defun
1816
1817@defun sleep-for seconds &optional millisec
1818This function simply pauses for @var{seconds} seconds without updating
1819the display. It pays no attention to available input. It returns
1820@code{nil}.
1821
1822@c Emacs 19 feature ??? maybe not working yet
1823The optional argument @var{millisec} specifies an additional waiting
1824period measured in milliseconds. This adds to the period specified by
1825@var{seconds}. Not all operating systems support waiting periods other
1826than multiples of a second; on those that do not, you get an error if
1827you specify nonzero @var{millisec}.
1828
1829Use @code{sleep-for} when you wish to guarantee a delay.
1830@end defun
1831
1832 @xref{Time of Day}, for functions to get the current time.
1833
1834@node Quitting
1835@section Quitting
1836@cindex @kbd{C-g}
1837@cindex quitting
1838
b22f3a19
RS
1839 Typing @kbd{C-g} while a Lisp function is running causes Emacs to
1840@dfn{quit} whatever it is doing. This means that control returns to the
1841innermost active command loop.
8db970a4
RS
1842
1843 Typing @kbd{C-g} while the command loop is waiting for keyboard input
1844does not cause a quit; it acts as an ordinary input character. In the
1845simplest case, you cannot tell the difference, because @kbd{C-g}
1846normally runs the command @code{keyboard-quit}, whose effect is to quit.
1847However, when @kbd{C-g} follows a prefix key, the result is an undefined
1848key. The effect is to cancel the prefix key as well as any prefix
1849argument.
1850
1851 In the minibuffer, @kbd{C-g} has a different definition: it aborts out
1852of the minibuffer. This means, in effect, that it exits the minibuffer
1853and then quits. (Simply quitting would return to the command loop
1854@emph{within} the minibuffer.) The reason why @kbd{C-g} does not quit
1855directly when the command reader is reading input is so that its meaning
1856can be redefined in the minibuffer in this way. @kbd{C-g} following a
1857prefix key is not redefined in the minibuffer, and it has its normal
1858effect of canceling the prefix key and prefix argument. This too
f142f62a 1859would not be possible if @kbd{C-g} always quit directly.
8db970a4 1860
b22f3a19 1861 When @kbd{C-g} does directly quit, it does so by setting the variable
f142f62a
RS
1862@code{quit-flag} to @code{t}. Emacs checks this variable at appropriate
1863times and quits if it is not @code{nil}. Setting @code{quit-flag}
8db970a4
RS
1864non-@code{nil} in any way thus causes a quit.
1865
f142f62a 1866 At the level of C code, quitting cannot happen just anywhere; only at the
b22f3a19 1867special places that check @code{quit-flag}. The reason for this is
8db970a4
RS
1868that quitting at other places might leave an inconsistency in Emacs's
1869internal state. Because quitting is delayed until a safe place, quitting
1870cannot make Emacs crash.
1871
1872 Certain functions such as @code{read-key-sequence} or
1873@code{read-quoted-char} prevent quitting entirely even though they wait
1874for input. Instead of quitting, @kbd{C-g} serves as the requested
1875input. In the case of @code{read-key-sequence}, this serves to bring
1876about the special behavior of @kbd{C-g} in the command loop. In the
1877case of @code{read-quoted-char}, this is so that @kbd{C-q} can be used
1878to quote a @kbd{C-g}.
1879
1880 You can prevent quitting for a portion of a Lisp function by binding
1881the variable @code{inhibit-quit} to a non-@code{nil} value. Then,
1882although @kbd{C-g} still sets @code{quit-flag} to @code{t} as usual, the
1883usual result of this---a quit---is prevented. Eventually,
1884@code{inhibit-quit} will become @code{nil} again, such as when its
1885binding is unwound at the end of a @code{let} form. At that time, if
1886@code{quit-flag} is still non-@code{nil}, the requested quit happens
b22f3a19
RS
1887immediately. This behavior is ideal when you wish to make sure that
1888quitting does not happen within a ``critical section'' of the program.
8db970a4
RS
1889
1890@cindex @code{read-quoted-char} quitting
1891 In some functions (such as @code{read-quoted-char}), @kbd{C-g} is
b22f3a19 1892handled in a special way that does not involve quitting. This is done
f142f62a 1893by reading the input with @code{inhibit-quit} bound to @code{t}, and
8db970a4
RS
1894setting @code{quit-flag} to @code{nil} before @code{inhibit-quit}
1895becomes @code{nil} again. This excerpt from the definition of
1896@code{read-quoted-char} shows how this is done; it also shows that
1897normal quitting is permitted after the first character of input.
1898
1899@example
1900(defun read-quoted-char (&optional prompt)
1901 "@dots{}@var{documentation}@dots{}"
1902 (let ((count 0) (code 0) char)
1903 (while (< count 3)
1904 (let ((inhibit-quit (zerop count))
1905 (help-form nil))
1906 (and prompt (message "%s-" prompt))
1907 (setq char (read-char))
1908 (if inhibit-quit (setq quit-flag nil)))
1909 @dots{})
1910 (logand 255 code)))
1911@end example
1912
1913@defvar quit-flag
f142f62a
RS
1914If this variable is non-@code{nil}, then Emacs quits immediately, unless
1915@code{inhibit-quit} is non-@code{nil}. Typing @kbd{C-g} ordinarily sets
8db970a4
RS
1916@code{quit-flag} non-@code{nil}, regardless of @code{inhibit-quit}.
1917@end defvar
1918
1919@defvar inhibit-quit
1920This variable determines whether Emacs should quit when @code{quit-flag}
1921is set to a value other than @code{nil}. If @code{inhibit-quit} is
1922non-@code{nil}, then @code{quit-flag} has no special effect.
1923@end defvar
1924
1925@deffn Command keyboard-quit
1926This function signals the @code{quit} condition with @code{(signal 'quit
1927nil)}. This is the same thing that quitting does. (See @code{signal}
1928in @ref{Errors}.)
1929@end deffn
1930
1931 You can specify a character other than @kbd{C-g} to use for quitting.
1932See the function @code{set-input-mode} in @ref{Terminal Input}.
1933
1934@node Prefix Command Arguments
1935@section Prefix Command Arguments
1936@cindex prefix argument
1937@cindex raw prefix argument
1938@cindex numeric prefix argument
1939
1940 Most Emacs commands can use a @dfn{prefix argument}, a number
1941specified before the command itself. (Don't confuse prefix arguments
b22f3a19
RS
1942with prefix keys.) The prefix argument is at all times represented by a
1943value, which may be @code{nil}, meaning there is currently no prefix
1944argument. Each command may use the prefix argument or ignore it.
8db970a4
RS
1945
1946 There are two representations of the prefix argument: @dfn{raw} and
1947@dfn{numeric}. The editor command loop uses the raw representation
1948internally, and so do the Lisp variables that store the information, but
1949commands can request either representation.
1950
1951 Here are the possible values of a raw prefix argument:
1952
1953@itemize @bullet
1954@item
1955@code{nil}, meaning there is no prefix argument. Its numeric value is
19561, but numerous commands make a distinction between @code{nil} and the
1957integer 1.
1958
1959@item
1960An integer, which stands for itself.
1961
1962@item
1963A list of one element, which is an integer. This form of prefix
1964argument results from one or a succession of @kbd{C-u}'s with no
1965digits. The numeric value is the integer in the list, but some
1966commands make a distinction between such a list and an integer alone.
1967
1968@item
1969The symbol @code{-}. This indicates that @kbd{M--} or @kbd{C-u -} was
1970typed, without following digits. The equivalent numeric value is
1971@minus{}1, but some commands make a distinction between the integer
1972@minus{}1 and the symbol @code{-}.
1973@end itemize
1974
f142f62a
RS
1975We illustrate these possibilities by calling the following function with
1976various prefixes:
8db970a4
RS
1977
1978@example
1979@group
1980(defun display-prefix (arg)
1981 "Display the value of the raw prefix arg."
1982 (interactive "P")
1983 (message "%s" arg))
1984@end group
1985@end example
1986
1987@noindent
1988Here are the results of calling @code{display-prefix} with various
1989raw prefix arguments:
1990
1991@example
1992 M-x display-prefix @print{} nil
1993
1994C-u M-x display-prefix @print{} (4)
1995
1996C-u C-u M-x display-prefix @print{} (16)
1997
1998C-u 3 M-x display-prefix @print{} 3
1999
2000M-3 M-x display-prefix @print{} 3 ; @r{(Same as @code{C-u 3}.)}
2001
2002C-u - M-x display-prefix @print{} -
2003
f142f62a 2004M-- M-x display-prefix @print{} - ; @r{(Same as @code{C-u -}.)}
8db970a4 2005
f142f62a 2006C-u - 7 M-x display-prefix @print{} -7
8db970a4 2007
f142f62a 2008M-- 7 M-x display-prefix @print{} -7 ; @r{(Same as @code{C-u -7}.)}
8db970a4
RS
2009@end example
2010
2011 Emacs uses two variables to store the prefix argument:
2012@code{prefix-arg} and @code{current-prefix-arg}. Commands such as
2013@code{universal-argument} that set up prefix arguments for other
2014commands store them in @code{prefix-arg}. In contrast,
2015@code{current-prefix-arg} conveys the prefix argument to the current
2016command, so setting it has no effect on the prefix arguments for future
2017commands.
2018
2019 Normally, commands specify which representation to use for the prefix
2020argument, either numeric or raw, in the @code{interactive} declaration.
b22f3a19 2021(@xref{Using Interactive}.) Alternatively, functions may look at the
8db970a4
RS
2022value of the prefix argument directly in the variable
2023@code{current-prefix-arg}, but this is less clean.
2024
f142f62a
RS
2025@defun prefix-numeric-value arg
2026This function returns the numeric meaning of a valid raw prefix argument
2027value, @var{arg}. The argument may be a symbol, a number, or a list.
b22f3a19
RS
2028If it is @code{nil}, the value 1 is returned; if it is @code{-}, the
2029value @minus{}1 is returned; if it is a number, that number is returned;
2030if it is a list, the @sc{car} of that list (which should be a number) is
2031returned.
f142f62a
RS
2032@end defun
2033
2034@defvar current-prefix-arg
2035This variable holds the raw prefix argument for the @emph{current}
2036command. Commands may examine it directly, but the usual way to access
2037it is with @code{(interactive "P")}.
2038@end defvar
2039
2040@defvar prefix-arg
2041The value of this variable is the raw prefix argument for the
2042@emph{next} editing command. Commands that specify prefix arguments for
2043the following command work by setting this variable.
2044@end defvar
2045
8db970a4
RS
2046 Do not call the functions @code{universal-argument},
2047@code{digit-argument}, or @code{negative-argument} unless you intend to
2048let the user enter the prefix argument for the @emph{next} command.
2049
2050@deffn Command universal-argument
2051This command reads input and specifies a prefix argument for the
2052following command. Don't call this command yourself unless you know
2053what you are doing.
2054@end deffn
2055
2056@deffn Command digit-argument arg
2057This command adds to the prefix argument for the following command. The
2058argument @var{arg} is the raw prefix argument as it was before this
2059command; it is used to compute the updated prefix argument. Don't call
2060this command yourself unless you know what you are doing.
2061@end deffn
2062
2063@deffn Command negative-argument arg
2064This command adds to the numeric argument for the next command. The
2065argument @var{arg} is the raw prefix argument as it was before this
2066command; its value is negated to form the new prefix argument. Don't
2067call this command yourself unless you know what you are doing.
2068@end deffn
2069
8db970a4
RS
2070@node Recursive Editing
2071@section Recursive Editing
2072@cindex recursive command loop
2073@cindex recursive editing level
2074@cindex command loop, recursive
2075
f142f62a
RS
2076 The Emacs command loop is entered automatically when Emacs starts up.
2077This top-level invocation of the command loop never exits; it keeps
2078running as long as Emacs does. Lisp programs can also invoke the
2079command loop. Since this makes more than one activation of the command
2080loop, we call it @dfn{recursive editing}. A recursive editing level has
2081the effect of suspending whatever command invoked it and permitting the
2082user to do arbitrary editing before resuming that command.
8db970a4
RS
2083
2084 The commands available during recursive editing are the same ones
2085available in the top-level editing loop and defined in the keymaps.
2086Only a few special commands exit the recursive editing level; the others
f142f62a
RS
2087return to the recursive editing level when they finish. (The special
2088commands for exiting are always available, but they do nothing when
2089recursive editing is not in progress.)
8db970a4
RS
2090
2091 All command loops, including recursive ones, set up all-purpose error
2092handlers so that an error in a command run from the command loop will
2093not exit the loop.
2094
2095@cindex minibuffer input
2096 Minibuffer input is a special kind of recursive editing. It has a few
2097special wrinkles, such as enabling display of the minibuffer and the
2098minibuffer window, but fewer than you might suppose. Certain keys
2099behave differently in the minibuffer, but that is only because of the
2100minibuffer's local map; if you switch windows, you get the usual Emacs
2101commands.
2102
2103@cindex @code{throw} example
2104@kindex exit
2105@cindex exit recursive editing
2106@cindex aborting
2107 To invoke a recursive editing level, call the function
2108@code{recursive-edit}. This function contains the command loop; it also
2109contains a call to @code{catch} with tag @code{exit}, which makes it
2110possible to exit the recursive editing level by throwing to @code{exit}
2111(@pxref{Catch and Throw}). If you throw a value other than @code{t},
2112then @code{recursive-edit} returns normally to the function that called
2113it. The command @kbd{C-M-c} (@code{exit-recursive-edit}) does this.
2114Throwing a @code{t} value causes @code{recursive-edit} to quit, so that
2115control returns to the command loop one level up. This is called
2116@dfn{aborting}, and is done by @kbd{C-]} (@code{abort-recursive-edit}).
2117
2118 Most applications should not use recursive editing, except as part of
2119using the minibuffer. Usually it is more convenient for the user if you
2120change the major mode of the current buffer temporarily to a special
b22f3a19
RS
2121major mode, which should have a command to go back to the previous mode.
2122(The @kbd{e} command in Rmail uses this technique.) Or, if you wish to
2123give the user different text to edit ``recursively'', create and select
2124a new buffer in a special mode. In this mode, define a command to
2125complete the processing and go back to the previous buffer. (The
2126@kbd{m} command in Rmail does this.)
8db970a4
RS
2127
2128 Recursive edits are useful in debugging. You can insert a call to
2129@code{debug} into a function definition as a sort of breakpoint, so that
2130you can look around when the function gets there. @code{debug} invokes
2131a recursive edit but also provides the other features of the debugger.
2132
2133 Recursive editing levels are also used when you type @kbd{C-r} in
2134@code{query-replace} or use @kbd{C-x q} (@code{kbd-macro-query}).
2135
2136@defun recursive-edit
2137@cindex suspend evaluation
2138This function invokes the editor command loop. It is called
2139automatically by the initialization of Emacs, to let the user begin
2140editing. When called from a Lisp program, it enters a recursive editing
2141level.
2142
2143 In the following example, the function @code{simple-rec} first
2144advances point one word, then enters a recursive edit, printing out a
2145message in the echo area. The user can then do any editing desired, and
2146then type @kbd{C-M-c} to exit and continue executing @code{simple-rec}.
2147
2148@example
2149(defun simple-rec ()
2150 (forward-word 1)
f142f62a 2151 (message "Recursive edit in progress")
8db970a4
RS
2152 (recursive-edit)
2153 (forward-word 1))
2154 @result{} simple-rec
2155(simple-rec)
2156 @result{} nil
2157@end example
2158@end defun
2159
2160@deffn Command exit-recursive-edit
2161This function exits from the innermost recursive edit (including
2162minibuffer input). Its definition is effectively @code{(throw 'exit
2163nil)}.
2164@end deffn
2165
2166@deffn Command abort-recursive-edit
2167This function aborts the command that requested the innermost recursive
2168edit (including minibuffer input), by signaling @code{quit}
2169after exiting the recursive edit. Its definition is effectively
2170@code{(throw 'exit t)}. @xref{Quitting}.
2171@end deffn
2172
2173@deffn Command top-level
2174This function exits all recursive editing levels; it does not return a
2175value, as it jumps completely out of any computation directly back to
2176the main command loop.
2177@end deffn
2178
2179@defun recursion-depth
2180This function returns the current depth of recursive edits. When no
2181recursive edit is active, it returns 0.
2182@end defun
2183
2184@node Disabling Commands
2185@section Disabling Commands
2186@cindex disabled command
2187
2188 @dfn{Disabling a command} marks the command as requiring user
2189confirmation before it can be executed. Disabling is used for commands
2190which might be confusing to beginning users, to prevent them from using
2191the commands by accident.
2192
2193@kindex disabled
2194 The low-level mechanism for disabling a command is to put a
2195non-@code{nil} @code{disabled} property on the Lisp symbol for the
2196command. These properties are normally set up by the user's
2197@file{.emacs} file with Lisp expressions such as this:
2198
2199@example
2200(put 'upcase-region 'disabled t)
2201@end example
2202
2203@noindent
2204For a few commands, these properties are present by default and may be
2205removed by the @file{.emacs} file.
2206
f142f62a
RS
2207 If the value of the @code{disabled} property is a string, the message
2208saying the command is disabled includes that string. For example:
8db970a4
RS
2209
2210@example
2211(put 'delete-region 'disabled
2212 "Text deleted this way cannot be yanked back!\n")
2213@end example
2214
2215 @xref{Disabling,,, emacs, The GNU Emacs Manual}, for the details on
2216what happens when a disabled command is invoked interactively.
2217Disabling a command has no effect on calling it as a function from Lisp
2218programs.
2219
2220@deffn Command enable-command command
2221Allow @var{command} to be executed without special confirmation from now
b22f3a19
RS
2222on, and (if the user confirms) alter the user's @file{.emacs} file so
2223that this will apply to future sessions.
8db970a4
RS
2224@end deffn
2225
2226@deffn Command disable-command command
f142f62a 2227Require special confirmation to execute @var{command} from now on, and
b22f3a19
RS
2228(if the user confirms) alter the user's @file{.emacs} file so that this
2229will apply to future sessions.
8db970a4
RS
2230@end deffn
2231
2232@defvar disabled-command-hook
f142f62a
RS
2233This normal hook is run instead of a disabled command, when the user
2234invokes the disabled command interactively. The hook functions can use
2235@code{this-command-keys} to determine what the user typed to run the
b22f3a19 2236command, and thus find the command itself. @xref{Hooks}.
8db970a4
RS
2237
2238By default, @code{disabled-command-hook} contains a function that asks
2239the user whether to proceed.
2240@end defvar
2241
2242@node Command History
2243@section Command History
2244@cindex command history
2245@cindex complex command
2246@cindex history of commands
2247
2248 The command loop keeps a history of the complex commands that have
2249been executed, to make it convenient to repeat these commands. A
2250@dfn{complex command} is one for which the interactive argument reading
2251uses the minibuffer. This includes any @kbd{M-x} command, any
2252@kbd{M-ESC} command, and any command whose @code{interactive}
2253specification reads an argument from the minibuffer. Explicit use of
2254the minibuffer during the execution of the command itself does not cause
2255the command to be considered complex.
2256
2257@defvar command-history
2258This variable's value is a list of recent complex commands, each
2259represented as a form to evaluate. It continues to accumulate all
2260complex commands for the duration of the editing session, but all but
2261the first (most recent) thirty elements are deleted when a garbage
2262collection takes place (@pxref{Garbage Collection}).
2263
2264@example
2265@group
2266command-history
2267@result{} ((switch-to-buffer "chistory.texi")
2268 (describe-key "^X^[")
2269 (visit-tags-table "~/emacs/src/")
2270 (find-tag "repeat-complex-command"))
2271@end group
2272@end example
2273@end defvar
2274
2275 This history list is actually a special case of minibuffer history
2276(@pxref{Minibuffer History}), with one special twist: the elements are
2277expressions rather than strings.
2278
2279 There are a number of commands devoted to the editing and recall of
2280previous commands. The commands @code{repeat-complex-command}, and
2281@code{list-command-history} are described in the user manual
2282(@pxref{Repetition,,, emacs, The GNU Emacs Manual}). Within the
2283minibuffer, the history commands used are the same ones available in any
2284minibuffer.
2285
2286@node Keyboard Macros
2287@section Keyboard Macros
2288@cindex keyboard macros
2289
2290 A @dfn{keyboard macro} is a canned sequence of input events that can
f142f62a
RS
2291be considered a command and made the definition of a key. The Lisp
2292representation of a keyboard macro is a string or vector containing the
2293events. Don't confuse keyboard macros with Lisp macros
2294(@pxref{Macros}).
8db970a4
RS
2295
2296@defun execute-kbd-macro macro &optional count
2297This function executes @var{macro} as a sequence of events. If
2298@var{macro} is a string or vector, then the events in it are executed
2299exactly as if they had been input by the user. The sequence is
2300@emph{not} expected to be a single key sequence; normally a keyboard
2301macro definition consists of several key sequences concatenated.
2302
2303If @var{macro} is a symbol, then its function definition is used in
2304place of @var{macro}. If that is another symbol, this process repeats.
2305Eventually the result should be a string or vector. If the result is
2306not a symbol, string, or vector, an error is signaled.
2307
2308The argument @var{count} is a repeat count; @var{macro} is executed that
2309many times. If @var{count} is omitted or @code{nil}, @var{macro} is
2310executed once. If it is 0, @var{macro} is executed over and over until it
2311encounters an error or a failing search.
2312@end defun
2313
2314@defvar last-kbd-macro
2315This variable is the definition of the most recently defined keyboard
2316macro. Its value is a string or vector, or @code{nil}.
2317@end defvar
2318
2319@defvar executing-macro
2320This variable contains the string or vector that defines the keyboard
2321macro that is currently executing. It is @code{nil} if no macro is
f142f62a
RS
2322currently executing. A command can test this variable to behave
2323differently when run from an executing macro. Do not set this variable
2324yourself.
8db970a4
RS
2325@end defvar
2326
2327@defvar defining-kbd-macro
f142f62a
RS
2328This variable indicates whether a keyboard macro is being defined. A
2329command can test this variable to behave differently while a macro is
2330being defined. The commands @code{start-kbd-macro} and
2331@code{end-kbd-macro} set this variable---do not set it yourself.
8db970a4
RS
2332@end defvar
2333