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