diff man/commands.texi @ 25829:ac7e9e5e2ccb

#
author Dave Love <fx@gnu.org>
date Wed, 29 Sep 1999 15:17:24 +0000
parents
children 8cda50572ee2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/commands.texi	Wed Sep 29 15:17:24 1999 +0000
@@ -0,0 +1,251 @@
+@c This is part of the Emacs manual.
+@c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
+@c See file emacs.texi for copying conditions.
+@iftex
+@chapter Characters, Keys and Commands
+
+  This chapter explains the character sets used by Emacs for input
+commands and for the contents of files, and also explains the concepts
+of @dfn{keys} and @dfn{commands}, which are fundamental for understanding
+how Emacs interprets your keyboard and mouse input.
+@end iftex
+
+@node User Input, Keys, Screen, Top
+@section Kinds of User Input
+@cindex input with the keyboard
+@cindex keyboard input
+@cindex character set (keyboard)
+@cindex ASCII
+@cindex C-
+@cindex Control
+@cindex control characters
+
+  GNU Emacs uses an extension of the ASCII character set for keyboard
+input; it also accepts non-character input events including function
+keys and mouse button actions.
+
+  ASCII consists of 128 character codes.  Some of these codes are
+assigned graphic symbols such as @samp{a} and @samp{=}; the rest are
+control characters, such as @kbd{Control-a} (usually written @kbd{C-a}
+for short).  @kbd{C-a} gets its name from the fact that you type it by
+holding down the @key{CTRL} key while pressing @kbd{a}.
+
+  Some ASCII control characters have special names, and most terminals
+have special keys you can type them with: for example, @key{RET},
+@key{TAB}, @key{DEL} and @key{ESC}.  The space character is usually
+referred to below as @key{SPC}, even though strictly speaking it is a
+graphic character whose graphic happens to be blank.  Some keyboards
+have a key labeled ``linefeed'' which is an alias for @kbd{C-j}.
+
+  Emacs extends the ASCII character set with thousands more printing
+characters (@pxref{International}), additional control characters, and a
+few more modifiers that can be combined with any character.
+
+  On ASCII terminals, there are only 32 possible control characters.
+These are the control variants of letters and @samp{@@[]\^_}.  In
+addition, the shift key is meaningless with control characters:
+@kbd{C-a} and @kbd{C-A} are the same character, and Emacs cannot
+distinguish them.
+
+  But the Emacs character set has room for control variants of all
+printing characters, and for distinguishing between @kbd{C-a} and
+@kbd{C-A}.  X Windows makes it possible to enter all these characters.
+For example, @kbd{C--} (that's Control-Minus) and @kbd{C-5} are
+meaningful Emacs commands under X.
+
+  Another Emacs character-set extension is additional modifier bits.
+Only one modifier bit is commonly used; it is called Meta.  Every
+character has a Meta variant; examples include @kbd{Meta-a} (normally
+written @kbd{M-a}, for short), @kbd{M-A} (not the same character as
+@kbd{M-a}, but those two characters normally have the same meaning in
+Emacs), @kbd{M-@key{RET}}, and @kbd{M-C-a}.  For reasons of tradition,
+we usually write @kbd{C-M-a} rather than @kbd{M-C-a}; logically
+speaking, the order in which the modifier keys @key{CTRL} and @key{META}
+are mentioned does not matter.
+
+@cindex Meta
+@cindex M-
+@cindex @key{ESC} replacing @key{META} key
+  Some terminals have a @key{META} key, and allow you to type Meta
+characters by holding this key down.  Thus, @kbd{Meta-a} is typed by
+holding down @key{META} and pressing @kbd{a}.  The @key{META} key works
+much like the @key{SHIFT} key.  Such a key is not always labeled
+@key{META}, however, as this function is often a special option for a key
+with some other primary purpose.@refill
+
+  If there is no @key{META} key, you can still type Meta characters
+using two-character sequences starting with @key{ESC}.  Thus, to enter
+@kbd{M-a}, you could type @kbd{@key{ESC} a}.  To enter @kbd{C-M-a}, you
+would type @kbd{@key{ESC} C-a}.  @key{ESC} is allowed on terminals with
+@key{META} keys, too, in case you have formed a habit of using it.
+  
+  X Windows provides several other modifier keys that can be applied to
+any input character.  These are called @key{SUPER}, @key{HYPER} and
+@key{ALT}.  We write @samp{s-}, @samp{H-} and @samp{A-} to say that a
+character uses these modifiers.  Thus, @kbd{s-H-C-x} is short for
+@kbd{Super-Hyper-Control-x}.  Not all X terminals actually provide keys
+for these modifier flags---in fact, many terminals have a key labeled
+@key{ALT} which is really a @key{META} key.  The standard key bindings
+of Emacs do not include any characters with these modifiers.  But you
+can assign them meanings of your own by customizing Emacs.
+
+  Keyboard input includes keyboard keys that are not characters at all:
+for example function keys and arrow keys.  Mouse buttons are also
+outside the gamut of characters.  You can modify these events with the
+modifier keys @key{CTRL}, @key{META}, @key{SUPER}, @key{HYPER} and
+@key{ALT}, just like keyboard characters.
+
+@cindex input event
+  Input characters and non-character inputs are collectively called
+@dfn{input events}.  @xref{Input Events,,, elisp, The Emacs Lisp
+Reference Manual}, for more information.  If you are not doing Lisp
+programming, but simply want to redefine the meaning of some characters
+or non-character events, see @ref{Customization}.
+
+  ASCII terminals cannot really send anything to the computer except
+ASCII characters.  These terminals use a sequence of characters to
+represent each function key.  But that is invisible to the Emacs user,
+because the keyboard input routines recognize these special sequences
+and convert them to function key events before any other part of Emacs
+gets to see them.
+
+@node Keys, Commands, User Input, Top
+@section Keys
+
+@cindex key sequence
+@cindex key
+  A @dfn{key sequence} (@dfn{key}, for short) is a sequence of input
+events that are meaningful as a unit---as ``a single command.''
+Some Emacs command sequences are just one character or one event; for
+example, just @kbd{C-f} is enough to move forward one character.  But
+Emacs also has commands that take two or more events to invoke.
+
+@cindex complete key
+@cindex prefix key
+  If a sequence of events is enough to invoke a command, it is a
+@dfn{complete key}.  Examples of complete keys include @kbd{C-a},
+@kbd{X}, @key{RET}, @key{NEXT} (a function key), @key{DOWN} (an arrow
+key), @kbd{C-x C-f}, and @kbd{C-x 4 C-f}.  If it isn't long enough to be
+complete, we call it a @dfn{prefix key}.  The above examples show that
+@kbd{C-x} and @kbd{C-x 4} are prefix keys.  Every key sequence is either
+a complete key or a prefix key.
+
+  Most single characters constitute complete keys in the standard Emacs
+command bindings.  A few of them are prefix keys.  A prefix key combines
+with the following input event to make a longer key sequence, which may
+itself be complete or a prefix.  For example, @kbd{C-x} is a prefix key,
+so @kbd{C-x} and the next input event combine to make a two-character
+key sequence.  Most of these key sequences are complete keys, including
+@kbd{C-x C-f} and @kbd{C-x b}.  A few, such as @kbd{C-x 4} and @kbd{C-x
+r}, are themselves prefix keys that lead to three-character key
+sequences.  There's no limit to the length of a key sequence, but in
+practice people rarely use sequences longer than four events.
+
+  By contrast, you can't add more events onto a complete key.  For
+example, the two-character sequence @kbd{C-f C-k} is not a key, because
+the @kbd{C-f} is a complete key in itself.  It's impossible to give
+@kbd{C-f C-k} an independent meaning as a command.  @kbd{C-f C-k} is two
+key sequences, not one.@refill
+
+  All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
+@kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x n}, @w{@kbd{C-x
+r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6}, @key{ESC},
+@kbd{M-g} and @kbd{M-j}.  But this list is not cast in concrete; it is
+just a matter of Emacs's standard key bindings.  If you customize Emacs,
+you can make new prefix keys, or eliminate these.  @xref{Key Bindings}.
+
+  If you do make or eliminate prefix keys, that changes the set of
+possible key sequences.  For example, if you redefine @kbd{C-f} as a
+prefix, @kbd{C-f C-k} automatically becomes a key (complete, unless you
+define it too as a prefix).  Conversely, if you remove the prefix
+definition of @kbd{C-x 4}, then @kbd{C-x 4 f} (or @kbd{C-x 4
+@var{anything}}) is no longer a key.
+
+  Typing the help character (@kbd{C-h} or @key{F1}) after a prefix
+character displays a list of the commands starting with that prefix.
+There are a few prefix characters for which @kbd{C-h} does not
+work---for historical reasons, they have other meanings for @kbd{C-h}
+which are not easy to change.  But @key{F1} should work for all prefix
+characters.
+  
+@node Commands, Text Characters, Keys, Top
+@section Keys and Commands
+
+@cindex binding
+@cindex function
+@cindex command
+@cindex function definition
+  This manual is full of passages that tell you what particular keys
+do.  But Emacs does not assign meanings to keys directly.  Instead,
+Emacs assigns meanings to named @dfn{commands}, and then gives keys
+their meanings by @dfn{binding} them to commands.
+
+  Every command has a name chosen by a programmer.  The name is usually
+made of a few English words separated by dashes; for example,
+@code{next-line} or @code{forward-word}.  A command also has a
+@dfn{function definition} which is a Lisp program; this is what makes
+the command do what it does.  In Emacs Lisp, a command is actually a
+special kind of Lisp function; one which specifies how to read arguments
+for it and call it interactively.  For more information on commands and
+functions, see @ref{What Is a Function,, What Is a Function, elisp, The
+Emacs Lisp Reference Manual}.  (The definition we use in this manual is
+simplified slightly.)
+
+  The bindings between keys and commands are recorded in various tables
+called @dfn{keymaps}.  @xref{Keymaps}.
+
+  When we say that ``@kbd{C-n} moves down vertically one line'' we are
+glossing over a distinction that is irrelevant in ordinary use but is vital
+in understanding how to customize Emacs.  It is the command
+@code{next-line} that is programmed to move down vertically.  @kbd{C-n} has
+this effect @emph{because} it is bound to that command.  If you rebind
+@kbd{C-n} to the command @code{forward-word} then @kbd{C-n} will move
+forward by words instead.  Rebinding keys is a common method of
+customization.@refill
+
+  In the rest of this manual, we usually ignore this subtlety to keep
+things simple.  To give the information needed for customization, we
+state the name of the command which really does the work in parentheses
+after mentioning the key that runs it.  For example, we will say that
+``The command @kbd{C-n} (@code{next-line}) moves point vertically
+down,'' meaning that @code{next-line} is a command that moves vertically
+down and @kbd{C-n} is a key that is standardly bound to it.
+
+  While we are on the subject of information for customization only,
+it's a good time to tell you about @dfn{variables}.  Often the
+description of a command will say, ``To change this, set the variable
+@code{mumble-foo}.''  A variable is a name used to remember a value.
+Most of the variables documented in this manual exist just to facilitate
+customization: some command or other part of Emacs examines the variable
+and behaves differently according to the value that you set.  Until you
+are interested in customizing, you can ignore the information about
+variables.  When you are ready to be interested, read the basic
+information on variables, and then the information on individual
+variables will make sense.  @xref{Variables}.
+
+@node Text Characters, Entering Emacs, Commands, Top
+@section Character Set for Text
+@cindex characters (in text)
+
+  Text in Emacs buffers is a sequence of 8-bit bytes.  Each byte can
+hold a single ASCII character.  Both ASCII control characters (octal
+codes 000 through 037, and 0177) and ASCII printing characters (codes
+040 through 0176) are allowed; however, non-ASCII control characters
+cannot appear in a buffer.  The other modifier flags used in keyboard
+input, such as Meta, are not allowed in buffers either.
+
+  Some ASCII control characters serve special purposes in text, and have
+special names.  For example, the newline character (octal code 012) is
+used in the buffer to end a line, and the tab character (octal code 011)
+is used for indenting to the next tab stop column (normally every 8
+columns).  @xref{Text Display}.
+
+  Non-ASCII printing characters can also appear in buffers.  When
+multibyte characters are enabled, you can use any of the non-ASCII
+printing characters that Emacs supports.  They have character codes
+starting at 256, octal 0400, and each one is represented as a sequence
+of two or more bytes.  @xref{International}.
+
+  If you disable multibyte characters, then you can use only one
+alphabet of non-ASCII characters, but they all fit in one byte.  They
+use codes 0200 through 0377.  @xref{Single-Byte European Support}.