changeset 96666:21d96bf3c08e

(User Input): Rewrite. Describe Emacs' behavior directly, rather than in the context of ASCII. Move description of special properties of modifier key to new Modifier Keys node. (Keys): Copyedit. (Text Characters): Delete node. Multibyte is the default nowadays, and the node contents are obsolete.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 15 Jul 2008 14:12:18 +0000
parents c4a2604fc76b
children 83bed804c66b
files doc/emacs/commands.texi
diffstat 1 files changed, 93 insertions(+), 186 deletions(-) [+]
line wrap: on
line diff
--- a/doc/emacs/commands.texi	Tue Jul 15 14:11:58 2008 +0000
+++ b/doc/emacs/commands.texi	Tue Jul 15 14:12:18 2008 +0000
@@ -6,9 +6,9 @@
 @chapter Characters, Keys and Commands
 
   This chapter explains the character sets used by Emacs for input
-commands and for the contents of files, and the fundamental concepts of
-@dfn{keys} and @dfn{commands}, whereby Emacs interprets your keyboard
-and mouse input.
+commands, and the fundamental concepts of @dfn{keys} and
+@dfn{commands}, whereby Emacs interprets your keyboard and mouse
+input.
 @end iftex
 
 @ifnottex
@@ -25,120 +25,65 @@
 @cindex Control
 @cindex control characters
 
-  GNU Emacs is designed for use with keyboard commands because that is
-the most efficient way to edit.  You can do editing with the mouse, as
-in other editors, and you can give commands with the menu bar and tool
-bar, and scroll with the scroll bar.  But if you keep on editing that
-way, you won't get the benefits of Emacs.  Therefore, this manual
-documents primarily how to edit with the keyboard.  You can force
-yourself to practice using the keyboard by using the shell command
-@samp{emacs -nw} to start Emacs, so that the mouse won't work.
-
-  Emacs uses an extension of the @acronym{ASCII} character set for
-keyboard input; it also accepts non-character input events including
-function keys and mouse button actions.
-
-  @acronym{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 @acronym{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 known as @key{SPC}, even though strictly speaking it is a
-graphic character that is blank.
+  GNU Emacs is primarily designed for use with the keyboard.  While it
+is possible to use the mouse to issue editing commands through the
+menu bar and tool bar, that is not as efficient as using the keyboard.
+Therefore, this manual mainly documents how to edit with the keyboard.
 
-  Emacs extends the @acronym{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 @acronym{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.
+  Keyboard input into Emacs is based on a heavily-extended version of
+@acronym{ASCII}.  The simplest characters that you can input into
+Emacs correspond to graphic symbols such as @samp{a}, @samp{B},
+@samp{3}, @samp{=}, the space character (conventionally denoted as
+@key{SPC}), and so on.  Entering these using the keyboard is
+straightforward.  Certain characters found on non-English keyboards
+also fall into this category (@pxref{International}).
 
-  The Emacs character set has room for control variants of all
-printing characters, and distinguishes @kbd{C-A} from @kbd{C-a}.
-Graphical terminals make it possible to enter all these characters.
-For example, @kbd{C--} (that's Control-Minus) and @kbd{C-5} are
-meaningful Emacs commands on a graphical terminal.
+  In addition to these simple characters, Emacs recognizes
+@dfn{control characters} such as @key{RET}, @key{TAB}, @key{DEL},
+@key{ESC}, @key{F1}, @key{Home}, @key{left}, etc.  Most keyboards have
+special keys for entering these.
 
-  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} (different from @kbd{M-a},
-but they are normally equivalent in Emacs), @kbd{M-@key{RET}}, and
-@kbd{M-C-a}.  That last means @kbd{a} with both the @key{CTRL} and
-@key{META} modifiers.  We usually write it as @kbd{C-M-a} rather than
-@kbd{M-C-a}, for reasons of tradition.
-
+@cindex modifier keys
+@cindex Control
+@cindex C-
 @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, you can type @kbd{Meta-a}
-by holding down @key{META} and pressing @kbd{a}.  The @key{META} key
-works much like the @key{SHIFT} key.  In fact, this key is more often
-labeled @key{ALT} or @key{EDIT}, instead of @key{META}; on a Sun
-keyboard, it may have a diamond on it.
-
-  If there is no @key{META} key, you can still type Meta characters
-using two-character sequences starting with @key{ESC}.  Thus, you can
-enter @kbd{M-a} by typing @kbd{@key{ESC} a}.  You can enter
-@kbd{C-M-a} by typing @kbd{@key{ESC} C-a}.  Unlike @key{META}, which
-modifies other characters, @key{ESC} is a separate character.  You
-don't hold down @key{ESC} while typing the next character; instead,
-you press it and release it, then you enter the next character.
-@key{ESC} is allowed on terminals with @key{META} keys, too, in case
-you have formed a habit of using it.
+  Emacs also recognizes control characters that are entered using
+@dfn{modifier keys}.  Two commonly-used modifier keys are
+@key{Control} (which is usually labelled as @key{Ctrl}), and
+@key{Meta} (which is usually labeled as @key{Alt})@footnote{We refer
+to @key{Alt} as @key{Meta} for historical reasons.}.  For example,
+@kbd{Control-a} is entered by holding down the @key{Ctrl} key while
+pressing @kbd{a}; we will refer to this as @kbd{C-a} for short.
+Similarly @kbd{Meta-a}, or @kbd{M-a} for short, is entered by holding
+down the @key{Alt} key and pressing @kbd{a}.
 
-  Emacs defines 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 graphical 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.
+@cindex @key{ESC} replacing @key{Meta} key
+  You can also type Meta characters using two-character sequences
+starting with @key{ESC}.  Thus, you can enter @kbd{M-a} by typing
+@kbd{@key{ESC} a}.  You can enter @kbd{C-M-a} by typing @kbd{@key{ESC}
+C-a}.  Unlike @key{Meta}, @key{ESC} is entered as a separate
+character.  You don't hold down @key{ESC} while typing the next
+character; instead, press @key{ESC} and release it, then enter the
+next character.  This feature is useful on certain text-only terminals
+where the @key{Meta} key does not function reliably.
 
-  If your keyboard lacks one of these modifier keys, you can enter it
-using @kbd{C-x @@}: @kbd{C-x @@ h} adds the ``hyper'' flag to the next
-character, @kbd{C-x @@ s} adds the ``super'' flag, and @kbd{C-x @@ a}
-adds the ``alt'' flag.  For instance, @kbd{C-x @@ h C-a} is a way to
-enter @kbd{Hyper-Control-a}.  (Unfortunately there is no way to add
-two modifiers by using @kbd{C-x @@} twice for the same character,
-because the first one goes to work on the @kbd{C-x}.)
-
-  Keyboard input includes keyboard keys that are not characters at
-all, such as function keys and arrow keys.  Mouse buttons are also not
-characters.  However, you can modify these events with the modifier
-keys @key{CTRL}, @key{META}, @key{SUPER}, @key{HYPER} and @key{ALT},
-just like keyboard characters.
+  Modifier keys can apply not only to alphanumerical characters, but
+also to special input characters, such as the arrow keys and mouse
+buttons.
 
 @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 the full Lisp-level details.  If you are not
-doing Lisp programming, but simply want to redefine the meaning of
-some characters or non-character events, see @ref{Customization}.
-
-  @acronym{ASCII} terminals cannot really send anything to the computer except
-@acronym{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 catch these special sequences
-and convert them to function key events before any other part of Emacs
-gets to see them.
+  @xref{Input Events,,, elisp, The Emacs Lisp Reference Manual}, for
+the full Lisp-level details about keyboard and mouse input, which are
+collectively referred to as @dfn{input events}.  If you are not doing
+Lisp programming, but simply want to redefine the meaning of some
+characters or non-character events, see @ref{Customization}.
 
 @cindex keys stolen by window manager
 @cindex window manager, keys stolen by
   On graphical displays, the window manager is likely to block the
-character @kbd{Meta-@key{TAB}} before Emacs can see it.  It may also
-block @kbd{Meta-@key{SPC}}, @kbd{C-M-d} and @kbd{C-M-l}.  If you have
+character @kbd{M-@key{TAB}} before Emacs can see it.  It may also
+block @kbd{M-@key{SPC}}, @kbd{C-M-d} and @kbd{C-M-l}.  If you have
 these problems, we recommend that you customize your window manager to
 turn off those commands, or put them on key combinations that Emacs
 does not use.
@@ -146,65 +91,58 @@
 @node Keys, Commands, User Input, Top
 @section Keys
 
-@cindex key sequence
+  Some Emacs commands are invoked by just one input event; for
+example, @kbd{C-f} moves forward one character in the buffer.  But
+Emacs also has commands that take two or more input events to invoke,
+such as @kbd{C-x C-f} and @kbd{C-x 4 C-f}.
+
 @cindex key
-  A @dfn{key sequence} (@dfn{key}, for short) is a sequence of input
-events that is meaningful as a unit---a ``single command.''  Some
-Emacs command sequences are invoked by just one character or one
-event; for example, just @kbd{C-f} moves forward one character in the
-buffer.  But Emacs also has commands that take two or more events to
-invoke.
-
+@cindex key sequence
 @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.
+  A @dfn{key sequence}, or @dfn{key} for short, is a sequence of one
+or more input events that is meaningful as a unit.  If a key sequence
+invokes a command, we call it a @dfn{complete key}; for example,
+@kbd{C-f}, @kbd{C-x C-f} and @kbd{C-x 4 C-f} are all complete keys.
+If a key sequence isn't long enough to invoke a command, we call it a
+@dfn{prefix key}; from the preceding example, we see that @kbd{C-x}
+and @kbd{C-x 4} are prefix keys.  Every key 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-event
-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-event key
-sequences.  There's no limit to the length of a key sequence, but in
-practice people rarely use sequences longer than four events.
+  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-event key sequence.  This two-event key
+sequence could itself be a prefix key (such as @kbd{C-x 4}), or a
+complete key (such as @kbd{C-x C-f}).  There is no limit to the length
+of a key sequence, but in practice people rarely use sequences longer
+than three or four input events.
 
   You can't add input events onto a complete key.  For example, the
 two-event 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
+is a complete key in itself, so @kbd{C-f C-k} cannot have 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},
+  By default, 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-o}.  (@key{F1} and @key{F2} are
-aliases for @kbd{C-h} and @kbd{C-x 6}.)  This list is not cast in stone;
-it describes the standard key bindings.  If you customize Emacs, you can make
-new prefix keys, or eliminate some of the standard ones (not
-recommended for most users).  @xref{Key Bindings}.
-
-  If you 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 that too as a prefix).  Conversely, if you remove the
-prefix definition of @kbd{C-x 4}, then @kbd{C-x 4 f} and @kbd{C-x 4
-@var{anything}} are no longer keys.
+n}, @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-o}.  (@key{F1} and @key{F2} are
+aliases for @kbd{C-h} and @kbd{C-x 6}.)  This list is not cast in
+stone; if you customize Emacs, you can make new prefix keys.  You
+could even eliminate some of the standard ones, though this is not
+recommended for most users; for example, if you remove the prefix
+definition of @kbd{C-x 4}, then @kbd{C-x 4 @var{anything}} would
+become an invalid key sequence.  @xref{Key Bindings}.
 
   Typing the help character (@kbd{C-h} or @key{F1}) after a prefix key
-displays a list of the commands starting with that prefix.  There are
-a few prefix keys after which @kbd{C-h} does not work---for historical
-reasons, they define other meanings for @kbd{C-h} which are painful to
-change.  @key{F1} works after all prefix keys.
+displays a list of the commands starting with that prefix.  The sole
+exception to this rule is @key{ESC}: @kbd{@key{ESC}C-h} is equivalent
+to @kbd{C-M-h}, which does something else entirely.  You can, however,
+use @key{F1} to displays a list of the commands starting with
+@key{ESC}.
 
-@node Commands, Text Characters, Keys, Top
+@node Commands, Entering Emacs, Keys, Top
 @section Keys and Commands
 
 @cindex binding
@@ -219,11 +157,11 @@
 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 how the
-command does its work.  In Emacs Lisp, a command is a Lisp function with
-special options to read arguments and for interactive use.  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 here is simplified slightly.)
+command does its work.  In Emacs Lisp, a command is a Lisp function
+with special properties that make it suitable for interactive use.
+For more information on commands and functions, see @ref{What Is a
+Function,, What Is a Function, elisp, The Emacs Lisp Reference
+Manual}.
 
   The bindings between keys and commands are recorded in tables called
 @dfn{keymaps}.  @xref{Keymaps}.
@@ -234,10 +172,8 @@
 a vertical move downward.  @kbd{C-n} has this effect @emph{because} it
 is bound to @code{next-line}.  If you rebind @kbd{C-n} to the command
 @code{forward-word}, @kbd{C-n} will move forward one word instead.
-Rebinding keys is an important method of customization.
 
-  In the rest of this manual, we usually ignore this distinction to
-keep things simple.  We will often speak of keys like @kbd{C-n} as
+  In this manual, we will often speak of keys like @kbd{C-n} as
 commands, even though strictly speaking the key is bound to a command.
 Usually we state the name of the command which really does the work in
 parentheses after mentioning the key that runs it.  For example, we
@@ -256,35 +192,6 @@
 information on variables (@pxref{Variables}) and the information about
 specific variables will make sense.
 
-@node Text Characters, Entering Emacs, Commands, Top
-@section Character Set for Text
-@cindex characters (in text)
-
-  Text in Emacs buffers is a sequence of characters.  In the simplest
-case, these are @acronym{ASCII} characters, each stored in one 8-bit
-byte.  Both @acronym{ASCII} control characters (octal codes 000
-through 037, and 0177) and @acronym{ASCII} printing characters (codes
-040 through 0176) are allowed.  The other modifier flags used in
-keyboard input, such as Meta, are not allowed in buffers.
-
-  Non-@acronym{ASCII} printing characters can also appear in buffers,
-when multibyte characters are enabled.  They have character codes
-starting at 256, octal 0400, and each one is represented as a sequence
-of two or more bytes.  @xref{International}.  Single-byte characters
-with codes 128 through 255 can also appear in multibyte buffers.
-However, non-@acronym{ASCII} control characters cannot appear in a
-buffer.
-
-  Some @acronym{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}.
-
-  If you disable multibyte characters, then you can use only one
-alphabet of non-@acronym{ASCII} characters, which all fit in one byte.
-They use octal codes 0200 through 0377.  @xref{Unibyte Mode}.
-
 @ifnottex
 @lowersections
 @end ifnottex