[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The first thing the command loop must do is read a key sequence, which
is a sequence of events that translates into a command. It does this by
calling the function read-key-sequence
. Your Lisp code can also
call this function (see section 21.7.1 Key Sequence Input). Lisp programs can also
do input at a lower level with read-event
(see section 21.7.2 Reading One Event) or discard pending input with discard-input
(see section 21.7.5 Miscellaneous Event Input Features).
The key sequence is translated into a command through the currently
active keymaps. See section 22.7 Key Lookup, for information on how this is done.
The result should be a keyboard macro or an interactively callable
function. If the key is M-x, then it reads the name of another
command, which it then calls. This is done by the command
execute-extended-command
(see section 21.3 Interactive Call).
To execute a command requires first reading the arguments for it.
This is done by calling command-execute
(see section 21.3 Interactive Call). For commands written in Lisp, the interactive
specification says how to read the arguments. This may use the prefix
argument (see section 21.11 Prefix Command Arguments) or may read with prompting
in the minibuffer (see section 20. Minibuffers). For example, the command
find-file
has an interactive
specification which says to
read a file name using the minibuffer. The command's function body does
not use the minibuffer; if you call this command from Lisp code as a
function, you must supply the file name string as an ordinary Lisp
function argument.
If the command is a string or vector (i.e., a keyboard macro) then
execute-kbd-macro
is used to execute it. You can call this
function yourself (see section 21.15 Keyboard Macros).
To terminate the execution of a running command, type C-g. This character causes quitting (see section 21.10 Quitting).
this-command
contains the command that is about to
run, and last-command
describes the previous command.
See section 23.6 Hooks.
this-command
describes the command that just ran, and
last-command
describes the command before that. See section 23.6 Hooks.
Quitting is suppressed while running pre-command-hook
and
post-command-hook
. If an error happens while executing one of
these hooks, it terminates execution of the hook, and clears the hook
variable to nil
so as to prevent an infinite loop of errors.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |