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