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