annotate man/commands.texi @ 38212:6b14cc47a4f2

Major rewrite. Sections Tags, Emerge, Change Log and Authors moved to maintaining.texi. Some sections reordered. Node Misc for Programs moved to just before the language-specific sections. New node Defuns contains an intro plus the old Defuns node (now renamed Moving by Defuns) as well as Imenu, Which Function, and a node Left Margin Paren to explain the convention about this. New node Parentheses now documents M-x check-parens. It contains subnodes Expressions, Moving by Parens, and Matching. Expressions and Moving by Parens contain the material formerly in Lists and List Commands, but divided up differently. The section Balanced Editing has been deleted. Most of the C indentation customization (all except c-set-style), has been replaced with a reference to the C Modes manual. Documentation now is divided into three subsections. Some rewrites in the Program Indent section about C-u TAB and C-M-q.
author Richard M. Stallman <rms@gnu.org>
date Tue, 26 Jun 2001 13:43:32 +0000
parents aad260e72f97
children 41ebc22562e0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
Dave Love <fx@gnu.org>
parents:
diff changeset
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
Dave Love <fx@gnu.org>
parents:
diff changeset
3 @c See file emacs.texi for copying conditions.
Dave Love <fx@gnu.org>
parents:
diff changeset
4 @iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
5 @chapter Characters, Keys and Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
6
Dave Love <fx@gnu.org>
parents:
diff changeset
7 This chapter explains the character sets used by Emacs for input
Dave Love <fx@gnu.org>
parents:
diff changeset
8 commands and for the contents of files, and also explains the concepts
Dave Love <fx@gnu.org>
parents:
diff changeset
9 of @dfn{keys} and @dfn{commands}, which are fundamental for understanding
Dave Love <fx@gnu.org>
parents:
diff changeset
10 how Emacs interprets your keyboard and mouse input.
Dave Love <fx@gnu.org>
parents:
diff changeset
11 @end iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
12
Dave Love <fx@gnu.org>
parents:
diff changeset
13 @node User Input, Keys, Screen, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
14 @section Kinds of User Input
Dave Love <fx@gnu.org>
parents:
diff changeset
15 @cindex input with the keyboard
Dave Love <fx@gnu.org>
parents:
diff changeset
16 @cindex keyboard input
Dave Love <fx@gnu.org>
parents:
diff changeset
17 @cindex character set (keyboard)
Dave Love <fx@gnu.org>
parents:
diff changeset
18 @cindex ASCII
Dave Love <fx@gnu.org>
parents:
diff changeset
19 @cindex C-
Dave Love <fx@gnu.org>
parents:
diff changeset
20 @cindex Control
Dave Love <fx@gnu.org>
parents:
diff changeset
21 @cindex control characters
Dave Love <fx@gnu.org>
parents:
diff changeset
22
Dave Love <fx@gnu.org>
parents:
diff changeset
23 GNU Emacs uses an extension of the ASCII character set for keyboard
Dave Love <fx@gnu.org>
parents:
diff changeset
24 input; it also accepts non-character input events including function
Dave Love <fx@gnu.org>
parents:
diff changeset
25 keys and mouse button actions.
Dave Love <fx@gnu.org>
parents:
diff changeset
26
Dave Love <fx@gnu.org>
parents:
diff changeset
27 ASCII consists of 128 character codes. Some of these codes are
Dave Love <fx@gnu.org>
parents:
diff changeset
28 assigned graphic symbols such as @samp{a} and @samp{=}; the rest are
Dave Love <fx@gnu.org>
parents:
diff changeset
29 control characters, such as @kbd{Control-a} (usually written @kbd{C-a}
Dave Love <fx@gnu.org>
parents:
diff changeset
30 for short). @kbd{C-a} gets its name from the fact that you type it by
Dave Love <fx@gnu.org>
parents:
diff changeset
31 holding down the @key{CTRL} key while pressing @kbd{a}.
Dave Love <fx@gnu.org>
parents:
diff changeset
32
Dave Love <fx@gnu.org>
parents:
diff changeset
33 Some ASCII control characters have special names, and most terminals
Dave Love <fx@gnu.org>
parents:
diff changeset
34 have special keys you can type them with: for example, @key{RET},
Dave Love <fx@gnu.org>
parents:
diff changeset
35 @key{TAB}, @key{DEL} and @key{ESC}. The space character is usually
Dave Love <fx@gnu.org>
parents:
diff changeset
36 referred to below as @key{SPC}, even though strictly speaking it is a
Dave Love <fx@gnu.org>
parents:
diff changeset
37 graphic character whose graphic happens to be blank. Some keyboards
Dave Love <fx@gnu.org>
parents:
diff changeset
38 have a key labeled ``linefeed'' which is an alias for @kbd{C-j}.
Dave Love <fx@gnu.org>
parents:
diff changeset
39
Dave Love <fx@gnu.org>
parents:
diff changeset
40 Emacs extends the ASCII character set with thousands more printing
Dave Love <fx@gnu.org>
parents:
diff changeset
41 characters (@pxref{International}), additional control characters, and a
Dave Love <fx@gnu.org>
parents:
diff changeset
42 few more modifiers that can be combined with any character.
Dave Love <fx@gnu.org>
parents:
diff changeset
43
Dave Love <fx@gnu.org>
parents:
diff changeset
44 On ASCII terminals, there are only 32 possible control characters.
Dave Love <fx@gnu.org>
parents:
diff changeset
45 These are the control variants of letters and @samp{@@[]\^_}. In
Dave Love <fx@gnu.org>
parents:
diff changeset
46 addition, the shift key is meaningless with control characters:
Dave Love <fx@gnu.org>
parents:
diff changeset
47 @kbd{C-a} and @kbd{C-A} are the same character, and Emacs cannot
Dave Love <fx@gnu.org>
parents:
diff changeset
48 distinguish them.
Dave Love <fx@gnu.org>
parents:
diff changeset
49
Dave Love <fx@gnu.org>
parents:
diff changeset
50 But the Emacs character set has room for control variants of all
Dave Love <fx@gnu.org>
parents:
diff changeset
51 printing characters, and for distinguishing between @kbd{C-a} and
35188
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
52 @kbd{C-A}. The X Window System makes it possible to enter all these
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
53 characters. For example, @kbd{C--} (that's Control-Minus) and @kbd{C-5}
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
54 are meaningful Emacs commands under X.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
55
Dave Love <fx@gnu.org>
parents:
diff changeset
56 Another Emacs character-set extension is additional modifier bits.
Dave Love <fx@gnu.org>
parents:
diff changeset
57 Only one modifier bit is commonly used; it is called Meta. Every
Dave Love <fx@gnu.org>
parents:
diff changeset
58 character has a Meta variant; examples include @kbd{Meta-a} (normally
Dave Love <fx@gnu.org>
parents:
diff changeset
59 written @kbd{M-a}, for short), @kbd{M-A} (not the same character as
Dave Love <fx@gnu.org>
parents:
diff changeset
60 @kbd{M-a}, but those two characters normally have the same meaning in
Dave Love <fx@gnu.org>
parents:
diff changeset
61 Emacs), @kbd{M-@key{RET}}, and @kbd{M-C-a}. For reasons of tradition,
Dave Love <fx@gnu.org>
parents:
diff changeset
62 we usually write @kbd{C-M-a} rather than @kbd{M-C-a}; logically
Dave Love <fx@gnu.org>
parents:
diff changeset
63 speaking, the order in which the modifier keys @key{CTRL} and @key{META}
Dave Love <fx@gnu.org>
parents:
diff changeset
64 are mentioned does not matter.
Dave Love <fx@gnu.org>
parents:
diff changeset
65
Dave Love <fx@gnu.org>
parents:
diff changeset
66 @cindex Meta
Dave Love <fx@gnu.org>
parents:
diff changeset
67 @cindex M-
Dave Love <fx@gnu.org>
parents:
diff changeset
68 @cindex @key{ESC} replacing @key{META} key
Dave Love <fx@gnu.org>
parents:
diff changeset
69 Some terminals have a @key{META} key, and allow you to type Meta
Dave Love <fx@gnu.org>
parents:
diff changeset
70 characters by holding this key down. Thus, @kbd{Meta-a} is typed by
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
71 holding down @key{META} and pressing @kbd{a}. The @key{META} key
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
72 works much like the @key{SHIFT} key. Such a key is not always labeled
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
73 @key{META}, however, as this function is often a special option for a
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
74 key with some other primary purpose. Sometimes it is labeled
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
75 @key{ALT} or @key{EDIT}; on a Sun keyboard, it may have a diamond on
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
76 it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
77
Dave Love <fx@gnu.org>
parents:
diff changeset
78 If there is no @key{META} key, you can still type Meta characters
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
79 using two-character sequences starting with @key{ESC}. Thus, you can enter
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
80 @kbd{M-a} by typing @kbd{@key{ESC} a}. You can enter @kbd{C-M-a} by
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
81 typing @kbd{@key{ESC} C-a}. @key{ESC} is allowed on terminals with
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
82 @key{META} keys, too, in case you have formed a habit of using it.
Dave Love <fx@gnu.org>
parents:
diff changeset
83
35188
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
84 The X Window System provides several other modifier keys that can be
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
85 applied to any input character. These are called @key{SUPER},
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
86 @key{HYPER} and @key{ALT}. We write @samp{s-}, @samp{H-} and @samp{A-}
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
87 to say that a character uses these modifiers. Thus, @kbd{s-H-C-x} is
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
88 short for @kbd{Super-Hyper-Control-x}. Not all X terminals actually
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
89 provide keys for these modifier flags---in fact, many terminals have a
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
90 key labeled @key{ALT} which is really a @key{META} key. The standard
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
91 key bindings of Emacs do not include any characters with these
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
92 modifiers. But you can assign them meanings of your own by customizing
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
93 Emacs.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
94
Dave Love <fx@gnu.org>
parents:
diff changeset
95 Keyboard input includes keyboard keys that are not characters at all:
Dave Love <fx@gnu.org>
parents:
diff changeset
96 for example function keys and arrow keys. Mouse buttons are also
Dave Love <fx@gnu.org>
parents:
diff changeset
97 outside the gamut of characters. You can modify these events with the
Dave Love <fx@gnu.org>
parents:
diff changeset
98 modifier keys @key{CTRL}, @key{META}, @key{SUPER}, @key{HYPER} and
Dave Love <fx@gnu.org>
parents:
diff changeset
99 @key{ALT}, just like keyboard characters.
Dave Love <fx@gnu.org>
parents:
diff changeset
100
Dave Love <fx@gnu.org>
parents:
diff changeset
101 @cindex input event
Dave Love <fx@gnu.org>
parents:
diff changeset
102 Input characters and non-character inputs are collectively called
Dave Love <fx@gnu.org>
parents:
diff changeset
103 @dfn{input events}. @xref{Input Events,,, elisp, The Emacs Lisp
Dave Love <fx@gnu.org>
parents:
diff changeset
104 Reference Manual}, for more information. If you are not doing Lisp
Dave Love <fx@gnu.org>
parents:
diff changeset
105 programming, but simply want to redefine the meaning of some characters
Dave Love <fx@gnu.org>
parents:
diff changeset
106 or non-character events, see @ref{Customization}.
Dave Love <fx@gnu.org>
parents:
diff changeset
107
Dave Love <fx@gnu.org>
parents:
diff changeset
108 ASCII terminals cannot really send anything to the computer except
Dave Love <fx@gnu.org>
parents:
diff changeset
109 ASCII characters. These terminals use a sequence of characters to
Dave Love <fx@gnu.org>
parents:
diff changeset
110 represent each function key. But that is invisible to the Emacs user,
Dave Love <fx@gnu.org>
parents:
diff changeset
111 because the keyboard input routines recognize these special sequences
Dave Love <fx@gnu.org>
parents:
diff changeset
112 and convert them to function key events before any other part of Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
113 gets to see them.
Dave Love <fx@gnu.org>
parents:
diff changeset
114
Dave Love <fx@gnu.org>
parents:
diff changeset
115 @node Keys, Commands, User Input, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
116 @section Keys
Dave Love <fx@gnu.org>
parents:
diff changeset
117
Dave Love <fx@gnu.org>
parents:
diff changeset
118 @cindex key sequence
Dave Love <fx@gnu.org>
parents:
diff changeset
119 @cindex key
Dave Love <fx@gnu.org>
parents:
diff changeset
120 A @dfn{key sequence} (@dfn{key}, for short) is a sequence of input
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
121 events that are meaningful as a unit---as ``a single command.'' Some
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
122 Emacs command sequences are just one character or one event; for
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
123 example, just @kbd{C-f} is enough to move forward one character in the
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
124 buffer. But Emacs also has commands that take two or more events to
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
125 invoke.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
126
Dave Love <fx@gnu.org>
parents:
diff changeset
127 @cindex complete key
Dave Love <fx@gnu.org>
parents:
diff changeset
128 @cindex prefix key
Dave Love <fx@gnu.org>
parents:
diff changeset
129 If a sequence of events is enough to invoke a command, it is a
Dave Love <fx@gnu.org>
parents:
diff changeset
130 @dfn{complete key}. Examples of complete keys include @kbd{C-a},
Dave Love <fx@gnu.org>
parents:
diff changeset
131 @kbd{X}, @key{RET}, @key{NEXT} (a function key), @key{DOWN} (an arrow
Dave Love <fx@gnu.org>
parents:
diff changeset
132 key), @kbd{C-x C-f}, and @kbd{C-x 4 C-f}. If it isn't long enough to be
Dave Love <fx@gnu.org>
parents:
diff changeset
133 complete, we call it a @dfn{prefix key}. The above examples show that
Dave Love <fx@gnu.org>
parents:
diff changeset
134 @kbd{C-x} and @kbd{C-x 4} are prefix keys. Every key sequence is either
Dave Love <fx@gnu.org>
parents:
diff changeset
135 a complete key or a prefix key.
Dave Love <fx@gnu.org>
parents:
diff changeset
136
Dave Love <fx@gnu.org>
parents:
diff changeset
137 Most single characters constitute complete keys in the standard Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
138 command bindings. A few of them are prefix keys. A prefix key combines
Dave Love <fx@gnu.org>
parents:
diff changeset
139 with the following input event to make a longer key sequence, which may
Dave Love <fx@gnu.org>
parents:
diff changeset
140 itself be complete or a prefix. For example, @kbd{C-x} is a prefix key,
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
141 so @kbd{C-x} and the next input event combine to make a two-event
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
142 key sequence. Most of these key sequences are complete keys, including
Dave Love <fx@gnu.org>
parents:
diff changeset
143 @kbd{C-x C-f} and @kbd{C-x b}. A few, such as @kbd{C-x 4} and @kbd{C-x
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
144 r}, are themselves prefix keys that lead to three-event key
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
145 sequences. There's no limit to the length of a key sequence, but in
Dave Love <fx@gnu.org>
parents:
diff changeset
146 practice people rarely use sequences longer than four events.
Dave Love <fx@gnu.org>
parents:
diff changeset
147
Dave Love <fx@gnu.org>
parents:
diff changeset
148 By contrast, you can't add more events onto a complete key. For
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
149 example, the two-event sequence @kbd{C-f C-k} is not a key, because
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
150 the @kbd{C-f} is a complete key in itself. It's impossible to give
Dave Love <fx@gnu.org>
parents:
diff changeset
151 @kbd{C-f C-k} an independent meaning as a command. @kbd{C-f C-k} is two
Dave Love <fx@gnu.org>
parents:
diff changeset
152 key sequences, not one.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
153
Dave Love <fx@gnu.org>
parents:
diff changeset
154 All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
Dave Love <fx@gnu.org>
parents:
diff changeset
155 @kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x n}, @w{@kbd{C-x
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
156 r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6}, @key{ESC}, and
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
157 @kbd{M-g}. But this list is not cast in concrete; it is
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
158 just a matter of Emacs's standard key bindings. If you customize Emacs,
Dave Love <fx@gnu.org>
parents:
diff changeset
159 you can make new prefix keys, or eliminate these. @xref{Key Bindings}.
Dave Love <fx@gnu.org>
parents:
diff changeset
160
Dave Love <fx@gnu.org>
parents:
diff changeset
161 If you do make or eliminate prefix keys, that changes the set of
Dave Love <fx@gnu.org>
parents:
diff changeset
162 possible key sequences. For example, if you redefine @kbd{C-f} as a
Dave Love <fx@gnu.org>
parents:
diff changeset
163 prefix, @kbd{C-f C-k} automatically becomes a key (complete, unless you
Dave Love <fx@gnu.org>
parents:
diff changeset
164 define it too as a prefix). Conversely, if you remove the prefix
Dave Love <fx@gnu.org>
parents:
diff changeset
165 definition of @kbd{C-x 4}, then @kbd{C-x 4 f} (or @kbd{C-x 4
Dave Love <fx@gnu.org>
parents:
diff changeset
166 @var{anything}}) is no longer a key.
Dave Love <fx@gnu.org>
parents:
diff changeset
167
Dave Love <fx@gnu.org>
parents:
diff changeset
168 Typing the help character (@kbd{C-h} or @key{F1}) after a prefix
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
169 key displays a list of the commands starting with that prefix.
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
170 There are a few prefix keys for which @kbd{C-h} does not
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
171 work---for historical reasons, they have other meanings for @kbd{C-h}
Dave Love <fx@gnu.org>
parents:
diff changeset
172 which are not easy to change. But @key{F1} should work for all prefix
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
173 keys.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
174
Dave Love <fx@gnu.org>
parents:
diff changeset
175 @node Commands, Text Characters, Keys, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
176 @section Keys and Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
177
Dave Love <fx@gnu.org>
parents:
diff changeset
178 @cindex binding
Dave Love <fx@gnu.org>
parents:
diff changeset
179 @cindex command
Dave Love <fx@gnu.org>
parents:
diff changeset
180 @cindex function definition
Dave Love <fx@gnu.org>
parents:
diff changeset
181 This manual is full of passages that tell you what particular keys
Dave Love <fx@gnu.org>
parents:
diff changeset
182 do. But Emacs does not assign meanings to keys directly. Instead,
Dave Love <fx@gnu.org>
parents:
diff changeset
183 Emacs assigns meanings to named @dfn{commands}, and then gives keys
Dave Love <fx@gnu.org>
parents:
diff changeset
184 their meanings by @dfn{binding} them to commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
185
Dave Love <fx@gnu.org>
parents:
diff changeset
186 Every command has a name chosen by a programmer. The name is usually
Dave Love <fx@gnu.org>
parents:
diff changeset
187 made of a few English words separated by dashes; for example,
Dave Love <fx@gnu.org>
parents:
diff changeset
188 @code{next-line} or @code{forward-word}. A command also has a
Dave Love <fx@gnu.org>
parents:
diff changeset
189 @dfn{function definition} which is a Lisp program; this is what makes
Dave Love <fx@gnu.org>
parents:
diff changeset
190 the command do what it does. In Emacs Lisp, a command is actually a
Dave Love <fx@gnu.org>
parents:
diff changeset
191 special kind of Lisp function; one which specifies how to read arguments
Dave Love <fx@gnu.org>
parents:
diff changeset
192 for it and call it interactively. For more information on commands and
Dave Love <fx@gnu.org>
parents:
diff changeset
193 functions, see @ref{What Is a Function,, What Is a Function, elisp, The
Dave Love <fx@gnu.org>
parents:
diff changeset
194 Emacs Lisp Reference Manual}. (The definition we use in this manual is
Dave Love <fx@gnu.org>
parents:
diff changeset
195 simplified slightly.)
Dave Love <fx@gnu.org>
parents:
diff changeset
196
Dave Love <fx@gnu.org>
parents:
diff changeset
197 The bindings between keys and commands are recorded in various tables
Dave Love <fx@gnu.org>
parents:
diff changeset
198 called @dfn{keymaps}. @xref{Keymaps}.
Dave Love <fx@gnu.org>
parents:
diff changeset
199
Dave Love <fx@gnu.org>
parents:
diff changeset
200 When we say that ``@kbd{C-n} moves down vertically one line'' we are
Dave Love <fx@gnu.org>
parents:
diff changeset
201 glossing over a distinction that is irrelevant in ordinary use but is vital
Dave Love <fx@gnu.org>
parents:
diff changeset
202 in understanding how to customize Emacs. It is the command
Dave Love <fx@gnu.org>
parents:
diff changeset
203 @code{next-line} that is programmed to move down vertically. @kbd{C-n} has
Dave Love <fx@gnu.org>
parents:
diff changeset
204 this effect @emph{because} it is bound to that command. If you rebind
Dave Love <fx@gnu.org>
parents:
diff changeset
205 @kbd{C-n} to the command @code{forward-word} then @kbd{C-n} will move
Dave Love <fx@gnu.org>
parents:
diff changeset
206 forward by words instead. Rebinding keys is a common method of
Dave Love <fx@gnu.org>
parents:
diff changeset
207 customization.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
208
Dave Love <fx@gnu.org>
parents:
diff changeset
209 In the rest of this manual, we usually ignore this subtlety to keep
Dave Love <fx@gnu.org>
parents:
diff changeset
210 things simple. To give the information needed for customization, we
Dave Love <fx@gnu.org>
parents:
diff changeset
211 state the name of the command which really does the work in parentheses
Dave Love <fx@gnu.org>
parents:
diff changeset
212 after mentioning the key that runs it. For example, we will say that
Dave Love <fx@gnu.org>
parents:
diff changeset
213 ``The command @kbd{C-n} (@code{next-line}) moves point vertically
Dave Love <fx@gnu.org>
parents:
diff changeset
214 down,'' meaning that @code{next-line} is a command that moves vertically
38172
aad260e72f97 Minor change.
Richard M. Stallman <rms@gnu.org>
parents: 37483
diff changeset
215 down, and @kbd{C-n} is a key that is normally bound to it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
216
Dave Love <fx@gnu.org>
parents:
diff changeset
217 While we are on the subject of information for customization only,
Dave Love <fx@gnu.org>
parents:
diff changeset
218 it's a good time to tell you about @dfn{variables}. Often the
Dave Love <fx@gnu.org>
parents:
diff changeset
219 description of a command will say, ``To change this, set the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
220 @code{mumble-foo}.'' A variable is a name used to remember a value.
Dave Love <fx@gnu.org>
parents:
diff changeset
221 Most of the variables documented in this manual exist just to facilitate
Dave Love <fx@gnu.org>
parents:
diff changeset
222 customization: some command or other part of Emacs examines the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
223 and behaves differently according to the value that you set. Until you
Dave Love <fx@gnu.org>
parents:
diff changeset
224 are interested in customizing, you can ignore the information about
Dave Love <fx@gnu.org>
parents:
diff changeset
225 variables. When you are ready to be interested, read the basic
Dave Love <fx@gnu.org>
parents:
diff changeset
226 information on variables, and then the information on individual
Dave Love <fx@gnu.org>
parents:
diff changeset
227 variables will make sense. @xref{Variables}.
Dave Love <fx@gnu.org>
parents:
diff changeset
228
Dave Love <fx@gnu.org>
parents:
diff changeset
229 @node Text Characters, Entering Emacs, Commands, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
230 @section Character Set for Text
Dave Love <fx@gnu.org>
parents:
diff changeset
231 @cindex characters (in text)
Dave Love <fx@gnu.org>
parents:
diff changeset
232
Dave Love <fx@gnu.org>
parents:
diff changeset
233 Text in Emacs buffers is a sequence of 8-bit bytes. Each byte can
Dave Love <fx@gnu.org>
parents:
diff changeset
234 hold a single ASCII character. Both ASCII control characters (octal
Dave Love <fx@gnu.org>
parents:
diff changeset
235 codes 000 through 037, and 0177) and ASCII printing characters (codes
Dave Love <fx@gnu.org>
parents:
diff changeset
236 040 through 0176) are allowed; however, non-ASCII control characters
Dave Love <fx@gnu.org>
parents:
diff changeset
237 cannot appear in a buffer. The other modifier flags used in keyboard
Dave Love <fx@gnu.org>
parents:
diff changeset
238 input, such as Meta, are not allowed in buffers either.
Dave Love <fx@gnu.org>
parents:
diff changeset
239
Dave Love <fx@gnu.org>
parents:
diff changeset
240 Some ASCII control characters serve special purposes in text, and have
Dave Love <fx@gnu.org>
parents:
diff changeset
241 special names. For example, the newline character (octal code 012) is
Dave Love <fx@gnu.org>
parents:
diff changeset
242 used in the buffer to end a line, and the tab character (octal code 011)
Dave Love <fx@gnu.org>
parents:
diff changeset
243 is used for indenting to the next tab stop column (normally every 8
Dave Love <fx@gnu.org>
parents:
diff changeset
244 columns). @xref{Text Display}.
Dave Love <fx@gnu.org>
parents:
diff changeset
245
Dave Love <fx@gnu.org>
parents:
diff changeset
246 Non-ASCII printing characters can also appear in buffers. When
Dave Love <fx@gnu.org>
parents:
diff changeset
247 multibyte characters are enabled, you can use any of the non-ASCII
Dave Love <fx@gnu.org>
parents:
diff changeset
248 printing characters that Emacs supports. They have character codes
Dave Love <fx@gnu.org>
parents:
diff changeset
249 starting at 256, octal 0400, and each one is represented as a sequence
36147
90084231ad3e Minor change in wording.
Richard M. Stallman <rms@gnu.org>
parents: 35188
diff changeset
250 of two or more bytes. @xref{International}. Single-byte characters
90084231ad3e Minor change in wording.
Richard M. Stallman <rms@gnu.org>
parents: 35188
diff changeset
251 with codes 128 through 255 can also appear in multibyte buffers.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
252
Dave Love <fx@gnu.org>
parents:
diff changeset
253 If you disable multibyte characters, then you can use only one
Dave Love <fx@gnu.org>
parents:
diff changeset
254 alphabet of non-ASCII characters, but they all fit in one byte. They
27219
8cda50572ee2 Update xref.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
255 use codes 0200 through 0377. @xref{Single-Byte Character Support}.