annotate man/commands.texi @ 62433:50ff61f0f99d

(define-minor-mode): Don't generate a defcustom for the mode hook variable.
author Lute Kamstra <lute@gnu.org>
date Tue, 17 May 2005 15:17:18 +0000
parents 0ba852c9cea6
children 3723093a21fd 4da4a09e8b1b
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
56810
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
13 @ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
14 @raisesections
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
15 @end ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
16
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
17 @node User Input, Keys, Screen, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
18 @section Kinds of User Input
Dave Love <fx@gnu.org>
parents:
diff changeset
19 @cindex input with the keyboard
Dave Love <fx@gnu.org>
parents:
diff changeset
20 @cindex keyboard input
Dave Love <fx@gnu.org>
parents:
diff changeset
21 @cindex character set (keyboard)
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
22 @cindex @acronym{ASCII}
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
23 @cindex C-
Dave Love <fx@gnu.org>
parents:
diff changeset
24 @cindex Control
Dave Love <fx@gnu.org>
parents:
diff changeset
25 @cindex control characters
Dave Love <fx@gnu.org>
parents:
diff changeset
26
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
27 GNU Emacs uses an extension of the @acronym{ASCII} character set for keyboard
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
28 input; it also accepts non-character input events including function
Dave Love <fx@gnu.org>
parents:
diff changeset
29 keys and mouse button actions.
Dave Love <fx@gnu.org>
parents:
diff changeset
30
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
31 @acronym{ASCII} consists of 128 character codes. Some of these codes are
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
32 assigned graphic symbols such as @samp{a} and @samp{=}; the rest are
Dave Love <fx@gnu.org>
parents:
diff changeset
33 control characters, such as @kbd{Control-a} (usually written @kbd{C-a}
Dave Love <fx@gnu.org>
parents:
diff changeset
34 for short). @kbd{C-a} gets its name from the fact that you type it by
Dave Love <fx@gnu.org>
parents:
diff changeset
35 holding down the @key{CTRL} key while pressing @kbd{a}.
Dave Love <fx@gnu.org>
parents:
diff changeset
36
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
37 Some @acronym{ASCII} control characters have special names, and most terminals
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
38 have special keys you can type them with: for example, @key{RET},
Dave Love <fx@gnu.org>
parents:
diff changeset
39 @key{TAB}, @key{DEL} and @key{ESC}. The space character is usually
Dave Love <fx@gnu.org>
parents:
diff changeset
40 referred to below as @key{SPC}, even though strictly speaking it is a
Dave Love <fx@gnu.org>
parents:
diff changeset
41 graphic character whose graphic happens to be blank. Some keyboards
Dave Love <fx@gnu.org>
parents:
diff changeset
42 have a key labeled ``linefeed'' which is an alias for @kbd{C-j}.
Dave Love <fx@gnu.org>
parents:
diff changeset
43
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
44 Emacs extends the @acronym{ASCII} character set with thousands more printing
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
45 characters (@pxref{International}), additional control characters, and a
Dave Love <fx@gnu.org>
parents:
diff changeset
46 few more modifiers that can be combined with any character.
Dave Love <fx@gnu.org>
parents:
diff changeset
47
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
48 On @acronym{ASCII} terminals, there are only 32 possible control characters.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
49 These are the control variants of letters and @samp{@@[]\^_}. In
Dave Love <fx@gnu.org>
parents:
diff changeset
50 addition, the shift key is meaningless with control characters:
Dave Love <fx@gnu.org>
parents:
diff changeset
51 @kbd{C-a} and @kbd{C-A} are the same character, and Emacs cannot
Dave Love <fx@gnu.org>
parents:
diff changeset
52 distinguish them.
Dave Love <fx@gnu.org>
parents:
diff changeset
53
Dave Love <fx@gnu.org>
parents:
diff changeset
54 But the Emacs character set has room for control variants of all
Dave Love <fx@gnu.org>
parents:
diff changeset
55 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
56 @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
57 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
58 are meaningful Emacs commands under X.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
59
Dave Love <fx@gnu.org>
parents:
diff changeset
60 Another Emacs character-set extension is additional modifier bits.
Dave Love <fx@gnu.org>
parents:
diff changeset
61 Only one modifier bit is commonly used; it is called Meta. Every
Dave Love <fx@gnu.org>
parents:
diff changeset
62 character has a Meta variant; examples include @kbd{Meta-a} (normally
Dave Love <fx@gnu.org>
parents:
diff changeset
63 written @kbd{M-a}, for short), @kbd{M-A} (not the same character as
Dave Love <fx@gnu.org>
parents:
diff changeset
64 @kbd{M-a}, but those two characters normally have the same meaning in
Dave Love <fx@gnu.org>
parents:
diff changeset
65 Emacs), @kbd{M-@key{RET}}, and @kbd{M-C-a}. For reasons of tradition,
Dave Love <fx@gnu.org>
parents:
diff changeset
66 we usually write @kbd{C-M-a} rather than @kbd{M-C-a}; logically
Dave Love <fx@gnu.org>
parents:
diff changeset
67 speaking, the order in which the modifier keys @key{CTRL} and @key{META}
Dave Love <fx@gnu.org>
parents:
diff changeset
68 are mentioned does not matter.
Dave Love <fx@gnu.org>
parents:
diff changeset
69
Dave Love <fx@gnu.org>
parents:
diff changeset
70 @cindex Meta
Dave Love <fx@gnu.org>
parents:
diff changeset
71 @cindex M-
Dave Love <fx@gnu.org>
parents:
diff changeset
72 @cindex @key{ESC} replacing @key{META} key
Dave Love <fx@gnu.org>
parents:
diff changeset
73 Some terminals have a @key{META} key, and allow you to type Meta
Dave Love <fx@gnu.org>
parents:
diff changeset
74 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
75 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
76 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
77 @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
78 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
79 @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
80 it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
81
Dave Love <fx@gnu.org>
parents:
diff changeset
82 If there is no @key{META} key, you can still type Meta characters
48530
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
83 using two-character sequences starting with @key{ESC}. Thus, you can
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
84 enter @kbd{M-a} by typing @kbd{@key{ESC} a}. You can enter
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
85 @kbd{C-M-a} by typing @kbd{@key{ESC} C-a}. Unlike @key{META}, which
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
86 modifies other characters, @key{ESC} is a separate character. You
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
87 don't hold down @key{ESC} while typing the next character; instead,
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
88 you press it and release it, then you enter the next character.
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
89 @key{ESC} is allowed on terminals with @key{META} keys, too, in case
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
90 you have formed a habit of using it.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48530
diff changeset
91
35188
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
92 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
93 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
94 @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
95 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
96 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
97 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
98 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
99 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
100 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
101 Emacs.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
102
45876
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
103 If your keyboard lacks one of these modifier keys, you can enter it
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
104 using @kbd{C-x @@}: @kbd{C-x @@ h} adds the ``hyper'' flag to the next
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
105 character, @kbd{C-x @@ s} adds the ``super'' flag, and @kbd{C-x @@ a}
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
106 adds the ``alt'' flag. For instance, @kbd{C-x @@ h C-a} is a way to
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
107 enter @kbd{Hyper-Control-a}. (Unfortunately there is no way to add
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
108 two modifiers by using @kbd{C-x @@} twice for the same character,
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
109 because the first one goes to work on the @kbd{C-x}.)
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
110
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
111 Keyboard input includes keyboard keys that are not characters at all:
Dave Love <fx@gnu.org>
parents:
diff changeset
112 for example function keys and arrow keys. Mouse buttons are also
Dave Love <fx@gnu.org>
parents:
diff changeset
113 outside the gamut of characters. You can modify these events with the
Dave Love <fx@gnu.org>
parents:
diff changeset
114 modifier keys @key{CTRL}, @key{META}, @key{SUPER}, @key{HYPER} and
Dave Love <fx@gnu.org>
parents:
diff changeset
115 @key{ALT}, just like keyboard characters.
Dave Love <fx@gnu.org>
parents:
diff changeset
116
Dave Love <fx@gnu.org>
parents:
diff changeset
117 @cindex input event
Dave Love <fx@gnu.org>
parents:
diff changeset
118 Input characters and non-character inputs are collectively called
Dave Love <fx@gnu.org>
parents:
diff changeset
119 @dfn{input events}. @xref{Input Events,,, elisp, The Emacs Lisp
Dave Love <fx@gnu.org>
parents:
diff changeset
120 Reference Manual}, for more information. If you are not doing Lisp
Dave Love <fx@gnu.org>
parents:
diff changeset
121 programming, but simply want to redefine the meaning of some characters
Dave Love <fx@gnu.org>
parents:
diff changeset
122 or non-character events, see @ref{Customization}.
Dave Love <fx@gnu.org>
parents:
diff changeset
123
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
124 @acronym{ASCII} terminals cannot really send anything to the computer except
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
125 @acronym{ASCII} characters. These terminals use a sequence of characters to
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
126 represent each function key. But that is invisible to the Emacs user,
Dave Love <fx@gnu.org>
parents:
diff changeset
127 because the keyboard input routines recognize these special sequences
Dave Love <fx@gnu.org>
parents:
diff changeset
128 and convert them to function key events before any other part of Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
129 gets to see them.
Dave Love <fx@gnu.org>
parents:
diff changeset
130
Dave Love <fx@gnu.org>
parents:
diff changeset
131 @node Keys, Commands, User Input, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
132 @section Keys
Dave Love <fx@gnu.org>
parents:
diff changeset
133
Dave Love <fx@gnu.org>
parents:
diff changeset
134 @cindex key sequence
Dave Love <fx@gnu.org>
parents:
diff changeset
135 @cindex key
Dave Love <fx@gnu.org>
parents:
diff changeset
136 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
137 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
138 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
139 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
140 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
141 invoke.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
142
Dave Love <fx@gnu.org>
parents:
diff changeset
143 @cindex complete key
Dave Love <fx@gnu.org>
parents:
diff changeset
144 @cindex prefix key
Dave Love <fx@gnu.org>
parents:
diff changeset
145 If a sequence of events is enough to invoke a command, it is a
Dave Love <fx@gnu.org>
parents:
diff changeset
146 @dfn{complete key}. Examples of complete keys include @kbd{C-a},
Dave Love <fx@gnu.org>
parents:
diff changeset
147 @kbd{X}, @key{RET}, @key{NEXT} (a function key), @key{DOWN} (an arrow
Dave Love <fx@gnu.org>
parents:
diff changeset
148 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
149 complete, we call it a @dfn{prefix key}. The above examples show that
Dave Love <fx@gnu.org>
parents:
diff changeset
150 @kbd{C-x} and @kbd{C-x 4} are prefix keys. Every key sequence is either
Dave Love <fx@gnu.org>
parents:
diff changeset
151 a complete key or a prefix key.
Dave Love <fx@gnu.org>
parents:
diff changeset
152
Dave Love <fx@gnu.org>
parents:
diff changeset
153 Most single characters constitute complete keys in the standard Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
154 command bindings. A few of them are prefix keys. A prefix key combines
Dave Love <fx@gnu.org>
parents:
diff changeset
155 with the following input event to make a longer key sequence, which may
Dave Love <fx@gnu.org>
parents:
diff changeset
156 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
157 so @kbd{C-x} and the next input event combine to make a two-event
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
158 key sequence. Most of these key sequences are complete keys, including
Dave Love <fx@gnu.org>
parents:
diff changeset
159 @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
160 r}, are themselves prefix keys that lead to three-event key
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
161 sequences. There's no limit to the length of a key sequence, but in
Dave Love <fx@gnu.org>
parents:
diff changeset
162 practice people rarely use sequences longer than four events.
Dave Love <fx@gnu.org>
parents:
diff changeset
163
Dave Love <fx@gnu.org>
parents:
diff changeset
164 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
165 example, the two-event sequence @kbd{C-f C-k} is not a key, because
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
166 the @kbd{C-f} is a complete key in itself. It's impossible to give
Dave Love <fx@gnu.org>
parents:
diff changeset
167 @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
168 key sequences, not one.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
169
Dave Love <fx@gnu.org>
parents:
diff changeset
170 All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
60422
95f4549c0b71 (Keys): Mention F1 and F2 in list of prefixes.
Richard M. Stallman <rms@gnu.org>
parents: 59523
diff changeset
171 @kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x
61027
0ba852c9cea6 (Keys): M-o is now a prefix key.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60422
diff changeset
172 n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6},
0ba852c9cea6 (Keys): M-o is now a prefix key.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60422
diff changeset
173 @key{ESC}, @kbd{M-o} and @kbd{M-g}. (@key{F1} and @key{F2} are aliases for
60422
95f4549c0b71 (Keys): Mention F1 and F2 in list of prefixes.
Richard M. Stallman <rms@gnu.org>
parents: 59523
diff changeset
174 @kbd{C-h} and @kbd{C-x 6}.) But this list is not cast in concrete; it
95f4549c0b71 (Keys): Mention F1 and F2 in list of prefixes.
Richard M. Stallman <rms@gnu.org>
parents: 59523
diff changeset
175 is just a matter of Emacs's standard key bindings. If you customize
95f4549c0b71 (Keys): Mention F1 and F2 in list of prefixes.
Richard M. Stallman <rms@gnu.org>
parents: 59523
diff changeset
176 Emacs, you can make new prefix keys, or eliminate these. @xref{Key
95f4549c0b71 (Keys): Mention F1 and F2 in list of prefixes.
Richard M. Stallman <rms@gnu.org>
parents: 59523
diff changeset
177 Bindings}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
178
Dave Love <fx@gnu.org>
parents:
diff changeset
179 If you do make or eliminate prefix keys, that changes the set of
Dave Love <fx@gnu.org>
parents:
diff changeset
180 possible key sequences. For example, if you redefine @kbd{C-f} as a
Dave Love <fx@gnu.org>
parents:
diff changeset
181 prefix, @kbd{C-f C-k} automatically becomes a key (complete, unless you
38953
41ebc22562e0 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 38172
diff changeset
182 define that too as a prefix). Conversely, if you remove the prefix
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
183 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
184 @var{anything}}) is no longer a key.
Dave Love <fx@gnu.org>
parents:
diff changeset
185
Dave Love <fx@gnu.org>
parents:
diff changeset
186 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
187 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
188 There are a few prefix keys for which @kbd{C-h} does not
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
189 work---for historical reasons, they have other meanings for @kbd{C-h}
Dave Love <fx@gnu.org>
parents:
diff changeset
190 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
191 keys.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48530
diff changeset
192
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
193 @node Commands, Text Characters, Keys, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
194 @section Keys and Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
195
Dave Love <fx@gnu.org>
parents:
diff changeset
196 @cindex binding
Dave Love <fx@gnu.org>
parents:
diff changeset
197 @cindex command
Dave Love <fx@gnu.org>
parents:
diff changeset
198 @cindex function definition
Dave Love <fx@gnu.org>
parents:
diff changeset
199 This manual is full of passages that tell you what particular keys
Dave Love <fx@gnu.org>
parents:
diff changeset
200 do. But Emacs does not assign meanings to keys directly. Instead,
Dave Love <fx@gnu.org>
parents:
diff changeset
201 Emacs assigns meanings to named @dfn{commands}, and then gives keys
Dave Love <fx@gnu.org>
parents:
diff changeset
202 their meanings by @dfn{binding} them to commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
203
Dave Love <fx@gnu.org>
parents:
diff changeset
204 Every command has a name chosen by a programmer. The name is usually
Dave Love <fx@gnu.org>
parents:
diff changeset
205 made of a few English words separated by dashes; for example,
Dave Love <fx@gnu.org>
parents:
diff changeset
206 @code{next-line} or @code{forward-word}. A command also has a
Dave Love <fx@gnu.org>
parents:
diff changeset
207 @dfn{function definition} which is a Lisp program; this is what makes
Dave Love <fx@gnu.org>
parents:
diff changeset
208 the command do what it does. In Emacs Lisp, a command is actually a
Dave Love <fx@gnu.org>
parents:
diff changeset
209 special kind of Lisp function; one which specifies how to read arguments
Dave Love <fx@gnu.org>
parents:
diff changeset
210 for it and call it interactively. For more information on commands and
Dave Love <fx@gnu.org>
parents:
diff changeset
211 functions, see @ref{What Is a Function,, What Is a Function, elisp, The
Dave Love <fx@gnu.org>
parents:
diff changeset
212 Emacs Lisp Reference Manual}. (The definition we use in this manual is
Dave Love <fx@gnu.org>
parents:
diff changeset
213 simplified slightly.)
Dave Love <fx@gnu.org>
parents:
diff changeset
214
Dave Love <fx@gnu.org>
parents:
diff changeset
215 The bindings between keys and commands are recorded in various tables
Dave Love <fx@gnu.org>
parents:
diff changeset
216 called @dfn{keymaps}. @xref{Keymaps}.
Dave Love <fx@gnu.org>
parents:
diff changeset
217
Dave Love <fx@gnu.org>
parents:
diff changeset
218 When we say that ``@kbd{C-n} moves down vertically one line'' we are
Dave Love <fx@gnu.org>
parents:
diff changeset
219 glossing over a distinction that is irrelevant in ordinary use but is vital
Dave Love <fx@gnu.org>
parents:
diff changeset
220 in understanding how to customize Emacs. It is the command
Dave Love <fx@gnu.org>
parents:
diff changeset
221 @code{next-line} that is programmed to move down vertically. @kbd{C-n} has
Dave Love <fx@gnu.org>
parents:
diff changeset
222 this effect @emph{because} it is bound to that command. If you rebind
Dave Love <fx@gnu.org>
parents:
diff changeset
223 @kbd{C-n} to the command @code{forward-word} then @kbd{C-n} will move
Dave Love <fx@gnu.org>
parents:
diff changeset
224 forward by words instead. Rebinding keys is a common method of
Dave Love <fx@gnu.org>
parents:
diff changeset
225 customization.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
226
59523
72a78ee72ab9 (Commands): Clarification.
Richard M. Stallman <rms@gnu.org>
parents: 56810
diff changeset
227 In the rest of this manual, we usually ignore this distinction to
72a78ee72ab9 (Commands): Clarification.
Richard M. Stallman <rms@gnu.org>
parents: 56810
diff changeset
228 keep things simple. We will often speak of keys like @kbd{C-n} as
72a78ee72ab9 (Commands): Clarification.
Richard M. Stallman <rms@gnu.org>
parents: 56810
diff changeset
229 commands, even though strictly speaking a key is bound to some
72a78ee72ab9 (Commands): Clarification.
Richard M. Stallman <rms@gnu.org>
parents: 56810
diff changeset
230 command. To give the information needed for customization, we state
72a78ee72ab9 (Commands): Clarification.
Richard M. Stallman <rms@gnu.org>
parents: 56810
diff changeset
231 the name of the command which really does the work in parentheses
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
232 after mentioning the key that runs it. For example, we will say that
Dave Love <fx@gnu.org>
parents:
diff changeset
233 ``The command @kbd{C-n} (@code{next-line}) moves point vertically
59523
72a78ee72ab9 (Commands): Clarification.
Richard M. Stallman <rms@gnu.org>
parents: 56810
diff changeset
234 down,'' meaning that @code{next-line} is a command that moves
72a78ee72ab9 (Commands): Clarification.
Richard M. Stallman <rms@gnu.org>
parents: 56810
diff changeset
235 vertically down, and @kbd{C-n} is a key that is normally bound to it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
236
Dave Love <fx@gnu.org>
parents:
diff changeset
237 While we are on the subject of information for customization only,
Dave Love <fx@gnu.org>
parents:
diff changeset
238 it's a good time to tell you about @dfn{variables}. Often the
Dave Love <fx@gnu.org>
parents:
diff changeset
239 description of a command will say, ``To change this, set the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
240 @code{mumble-foo}.'' A variable is a name used to remember a value.
Dave Love <fx@gnu.org>
parents:
diff changeset
241 Most of the variables documented in this manual exist just to facilitate
Dave Love <fx@gnu.org>
parents:
diff changeset
242 customization: some command or other part of Emacs examines the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
243 and behaves differently according to the value that you set. Until you
Dave Love <fx@gnu.org>
parents:
diff changeset
244 are interested in customizing, you can ignore the information about
Dave Love <fx@gnu.org>
parents:
diff changeset
245 variables. When you are ready to be interested, read the basic
Dave Love <fx@gnu.org>
parents:
diff changeset
246 information on variables, and then the information on individual
Dave Love <fx@gnu.org>
parents:
diff changeset
247 variables will make sense. @xref{Variables}.
Dave Love <fx@gnu.org>
parents:
diff changeset
248
Dave Love <fx@gnu.org>
parents:
diff changeset
249 @node Text Characters, Entering Emacs, Commands, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
250 @section Character Set for Text
Dave Love <fx@gnu.org>
parents:
diff changeset
251 @cindex characters (in text)
Dave Love <fx@gnu.org>
parents:
diff changeset
252
Dave Love <fx@gnu.org>
parents:
diff changeset
253 Text in Emacs buffers is a sequence of 8-bit bytes. Each byte can
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
254 hold a single @acronym{ASCII} character. Both @acronym{ASCII} control characters (octal
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
255 codes 000 through 037, and 0177) and @acronym{ASCII} printing characters (codes
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
256 040 through 0176) are allowed; however, non-@acronym{ASCII} control characters
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
257 cannot appear in a buffer. The other modifier flags used in keyboard
Dave Love <fx@gnu.org>
parents:
diff changeset
258 input, such as Meta, are not allowed in buffers either.
Dave Love <fx@gnu.org>
parents:
diff changeset
259
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
260 Some @acronym{ASCII} control characters serve special purposes in text, and have
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
261 special names. For example, the newline character (octal code 012) is
Dave Love <fx@gnu.org>
parents:
diff changeset
262 used in the buffer to end a line, and the tab character (octal code 011)
Dave Love <fx@gnu.org>
parents:
diff changeset
263 is used for indenting to the next tab stop column (normally every 8
Dave Love <fx@gnu.org>
parents:
diff changeset
264 columns). @xref{Text Display}.
Dave Love <fx@gnu.org>
parents:
diff changeset
265
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
266 Non-@acronym{ASCII} printing characters can also appear in buffers. When
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
267 multibyte characters are enabled, you can use any of the non-@acronym{ASCII}
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
268 printing characters that Emacs supports. They have character codes
Dave Love <fx@gnu.org>
parents:
diff changeset
269 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
270 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
271 with codes 128 through 255 can also appear in multibyte buffers.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
272
Dave Love <fx@gnu.org>
parents:
diff changeset
273 If you disable multibyte characters, then you can use only one
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
274 alphabet of non-@acronym{ASCII} characters, but they all fit in one byte. They
27219
8cda50572ee2 Update xref.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
275 use codes 0200 through 0377. @xref{Single-Byte Character Support}.
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
276
56810
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
277 @ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
278 @lowersections
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
279 @end ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
280
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
281 @ignore
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
282 arch-tag: 9be43eef-d1f4-4d03-a916-c741ea713a45
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
283 @end ignore