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