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