]> code.delx.au - gnu-emacs/blob - man/fixit.texi
(enum event_kind) [MAC_OS]: Update comment for MAC_APPLE_EVENT.
[gnu-emacs] / man / fixit.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2002, 2003,
3 @c 2004, 2005, 2006 Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Fixit, Keyboard Macros, Search, Top
6 @chapter Commands for Fixing Typos
7 @cindex typos, fixing
8 @cindex mistakes, correcting
9
10 In this chapter we describe the commands that are especially useful for
11 the times when you catch a mistake in your text just after you have made
12 it, or change your mind while composing text on the fly.
13
14 The most fundamental command for correcting erroneous editing is the
15 undo command, @kbd{C-x u} or @kbd{C-_} or @kbd{C-/}. This command
16 undoes a single command (usually), a part of a command (in the case of
17 @code{query-replace}), or several consecutive self-inserting
18 characters. Consecutive repetitions of the undo command undo earlier
19 and earlier changes, back to the limit of the undo information
20 available. @xref{Undo}, for more information.
21
22 @menu
23 * Undo:: The Undo commands.
24 * Kill Errors:: Commands to kill a batch of recently entered text.
25 * Transpose:: Exchanging two characters, words, lines, lists...
26 * Fixing Case:: Correcting case of last word entered.
27 * Spelling:: Apply spelling checker to a word, or a whole file.
28 @end menu
29
30 @node Undo
31 @section Undo
32 @cindex undo
33 @cindex changes, undoing
34
35 The @dfn{undo} commands undo recent changes in the buffer's text.
36 Each buffer records changes individually, and the undo command always
37 applies to the current buffer. You can undo all the changes in a
38 buffer for as far as back these records go. Usually each editing
39 command makes a separate entry in the undo records, but some commands
40 such as @code{query-replace} divide their changes into multiple
41 entries for flexibility in undoing. Meanwhile, self-inserting
42 characters are usually grouped to make undoing less tedious.
43
44 @table @kbd
45 @item C-x u
46 @itemx C-_
47 @itemx C-/
48 Undo one entry in the current buffer's undo records (@code{undo}).
49 @end table
50
51 @kindex C-x u
52 @kindex C-_
53 @kindex C-/
54 @findex undo
55 To begin to undo, type the command @kbd{C-x u} (or its aliases,
56 @kbd{C-_} or @kbd{C-/}). This undoes the most recent change in the
57 buffer, and moves point back to where it was before that change.
58
59 Consecutive repetitions of @kbd{C-x u} (or its aliases) undo earlier
60 and earlier changes in the current buffer, back to the limit of the
61 current buffer's undo records. If all the recorded changes have
62 already been undone, the undo command just signals an error.
63
64 If you notice that a buffer has been modified accidentally, the
65 easiest way to recover is to type @kbd{C-_} repeatedly until the stars
66 disappear from the front of the mode line. At this time, all the
67 modifications you made have been canceled. Whenever an undo command
68 makes the stars disappear from the mode line, it means that the buffer
69 contents are the same as they were when the file was last read in or
70 saved.
71
72 If you do not remember whether you changed the buffer deliberately,
73 type @kbd{C-_} once. When you see the last change you made undone, you
74 will see whether it was an intentional change. If it was an accident,
75 leave it undone. If it was deliberate, redo the change as described
76 below.
77
78 @findex undo-only
79 Any command other than an undo command breaks the sequence of undo
80 commands. Starting from that moment, the previous undo commands
81 become ordinary changes that you can undo. Thus, to redo changes you
82 have undone, type @kbd{C-f} or any other command that will harmlessly
83 break the sequence of undoing, then type undo commands again. On the
84 other hand, if you want to resume undoing, without redoing previous
85 undo commands, use @kbd{M-x undo-only}. This is like @code{undo}, but
86 will not redo changes you have just undone.
87
88 @cindex selective undo
89 @kindex C-u C-x u
90 Ordinary undo applies to all changes made in the current buffer. You
91 can also perform @dfn{selective undo}, limited to the region.
92
93 To do this, specify the region you want, then run the @code{undo}
94 command with a prefix argument (the value does not matter): @kbd{C-u
95 C-x u} or @kbd{C-u C-_}. This undoes the most recent change in the
96 region. To undo further changes in the same region, repeat the
97 @code{undo} command (no prefix argument is needed). In Transient Mark
98 mode (@pxref{Transient Mark}), any use of @code{undo} when there is an
99 active region performs selective undo; you do not need a prefix
100 argument.
101
102 Some specialized buffers do not make undo records. Buffers
103 whose names start with spaces never do; these buffers are used
104 internally by Emacs and its extensions to hold text that users don't
105 normally look at or edit.
106
107 @vindex undo-limit
108 @vindex undo-strong-limit
109 @vindex undo-outer-limit
110 @cindex undo limit
111 When the undo records for a buffer becomes too large, Emacs
112 discards the oldest undo records from time to time (during garbage
113 collection). You can specify how much undo records to keep by
114 setting three variables: @code{undo-limit}, @code{undo-strong-limit},
115 and @code{undo-outer-limit}. Their values are expressed in units of
116 bytes of space.
117
118 The variable @code{undo-limit} sets a soft limit: Emacs keeps undo
119 data for enough commands to reach this size, and perhaps exceed it,
120 but does not keep data for any earlier commands beyond that. Its
121 default value is 20000. The variable @code{undo-strong-limit} sets a
122 stricter limit: a previous command (not the most recent one) which
123 pushes the size past this amount is itself forgotten. The default
124 value of @code{undo-strong-limit} is 30000.
125
126 Regardless of the values of those variables, the most recent change
127 is never discarded unless it gets bigger than @code{undo-outer-limit}
128 (normally 3,000,000). At that point, Emacs discards the undo data and
129 warns you about it. This is the only situation in which you cannot
130 undo the last command. If this happens, you can increase the value of
131 @code{undo-outer-limit} to make it even less likely to happen in the
132 future. But if you didn't expect the command to create such large
133 undo data, then it is probably a bug and you should report it.
134 @xref{Bugs,, Reporting Bugs}.
135
136 The reason the @code{undo} command has three key bindings, @kbd{C-x
137 u}, @kbd{C-_} and @kbd{C-/}, is that it is worthy of a
138 single-character key, but @kbd{C-x u} is more straightforward for
139 beginners to remember and type. Meanwhile, @kbd{C--} on a text-only
140 terminal is really @kbd{C-_}, which makes it a natural and easily
141 typed binding for undoing.
142
143 @node Kill Errors
144 @section Killing Your Mistakes
145
146 @table @kbd
147 @item @key{DEL}
148 Delete last character (@code{delete-backward-char}).
149 @item M-@key{DEL}
150 Kill last word (@code{backward-kill-word}).
151 @item C-x @key{DEL}
152 Kill to beginning of sentence (@code{backward-kill-sentence}).
153 @end table
154
155 The @key{DEL} character (@code{delete-backward-char}) is the most
156 important correction command. It deletes the character before point.
157 When @key{DEL} follows a self-inserting character command, you can think
158 of it as canceling that command. However, avoid the confusion of thinking
159 of @key{DEL} as a general way to cancel a command!
160
161 When your mistake is longer than a couple of characters, it might be
162 more convenient to use @kbd{M-@key{DEL}} or @kbd{C-x @key{DEL}}.
163 @kbd{M-@key{DEL}} kills back to the start of the last word, and @kbd{C-x
164 @key{DEL}} kills back to the start of the last sentence. @kbd{C-x
165 @key{DEL}} is particularly useful when you change your mind about the
166 phrasing of the text you are writing. @kbd{M-@key{DEL}} and @kbd{C-x
167 @key{DEL}} save the killed text for @kbd{C-y} and @kbd{M-y} to
168 retrieve. @xref{Yanking}.@refill
169
170 @kbd{M-@key{DEL}} is often useful even when you have typed only a few
171 characters wrong, if you know you are confused in your typing and aren't
172 sure exactly what you typed. At such a time, you cannot correct with
173 @key{DEL} except by looking at the screen to see what you did. Often it
174 requires less thought to kill the whole word and start again.
175
176 @node Transpose
177 @section Transposing Text
178
179 @table @kbd
180 @item C-t
181 Transpose two characters (@code{transpose-chars}).
182 @item M-t
183 Transpose two words (@code{transpose-words}).
184 @item C-M-t
185 Transpose two balanced expressions (@code{transpose-sexps}).
186 @item C-x C-t
187 Transpose two lines (@code{transpose-lines}).
188 @end table
189
190 @kindex C-t
191 @findex transpose-chars
192 The common error of transposing two characters can be fixed, when they
193 are adjacent, with the @kbd{C-t} command (@code{transpose-chars}). Normally,
194 @kbd{C-t} transposes the two characters on either side of point. When
195 given at the end of a line, rather than transposing the last character of
196 the line with the newline, which would be useless, @kbd{C-t} transposes the
197 last two characters on the line. So, if you catch your transposition error
198 right away, you can fix it with just a @kbd{C-t}. If you don't catch it so
199 fast, you must move the cursor back between the two transposed
200 characters before you type @kbd{C-t}. If you transposed a space with
201 the last character of the word before it, the word motion commands are
202 a good way of getting there. Otherwise, a reverse search (@kbd{C-r})
203 is often the best way. @xref{Search}.
204
205 @kindex C-x C-t
206 @findex transpose-lines
207 @kindex M-t
208 @findex transpose-words
209 @c Don't index C-M-t and transpose-sexps here, they are indexed in
210 @c programs.texi, in the "List Commands" node.
211 @c @kindex C-M-t
212 @c @findex transpose-sexps
213 @kbd{M-t} transposes the word before point with the word after point
214 (@code{transpose-words}). It moves point forward over a word,
215 dragging the word preceding or containing point forward as well. The
216 punctuation characters between the words do not move. For example,
217 @w{@samp{FOO, BAR}} transposes into @w{@samp{BAR, FOO}} rather than
218 @samp{@w{BAR FOO,}}.
219
220 @kbd{C-M-t} (@code{transpose-sexps}) is a similar command for
221 transposing two expressions (@pxref{Expressions}), and @kbd{C-x C-t}
222 (@code{transpose-lines}) exchanges lines. They work like @kbd{M-t}
223 except as regards what units of text they transpose.
224
225 A numeric argument to a transpose command serves as a repeat count: it
226 tells the transpose command to move the character (word, expression, line)
227 before or containing point across several other characters (words,
228 expressions, lines). For example, @kbd{C-u 3 C-t} moves the character before
229 point forward across three other characters. It would change
230 @samp{f@point{}oobar} into @samp{oobf@point{}ar}. This is equivalent to
231 repeating @kbd{C-t} three times. @kbd{C-u - 4 M-t} moves the word
232 before point backward across four words. @kbd{C-u - C-M-t} would cancel
233 the effect of plain @kbd{C-M-t}.@refill
234
235 A numeric argument of zero is assigned a special meaning (because
236 otherwise a command with a repeat count of zero would do nothing): to
237 transpose the character (word, expression, line) ending after point
238 with the one ending after the mark.
239
240 @node Fixing Case
241 @section Case Conversion
242
243 @table @kbd
244 @item M-- M-l
245 Convert last word to lower case. Note @kbd{Meta--} is Meta-minus.
246 @item M-- M-u
247 Convert last word to all upper case.
248 @item M-- M-c
249 Convert last word to lower case with capital initial.
250 @end table
251
252 @kindex M-@t{-} M-l
253 @kindex M-@t{-} M-u
254 @kindex M-@t{-} M-c
255 A very common error is to type words in the wrong case. Because of this,
256 the word case-conversion commands @kbd{M-l}, @kbd{M-u} and @kbd{M-c} have a
257 special feature when used with a negative argument: they do not move the
258 cursor. As soon as you see you have mistyped the last word, you can simply
259 case-convert it and go on typing. @xref{Case}.@refill
260
261 @node Spelling
262 @section Checking and Correcting Spelling
263 @cindex spelling, checking and correcting
264 @cindex checking spelling
265 @cindex correcting spelling
266
267 This section describes the commands to check the spelling of a single
268 word or of a portion of a buffer. These commands work with the spelling
269 checker programs Aspell and Ispell, which are not part of Emacs.
270 @ifinfo
271 @xref{Top, Aspell,, aspell, The Aspell Manual}.
272 @end ifinfo
273
274 @table @kbd
275 @item M-x flyspell-mode
276 Enable Flyspell mode, which highlights all misspelled words.
277 @item M-x flyspell-prog-mode
278 Enable Flyspell mode for comments and strings only.
279 @item M-$
280 Check and correct spelling of the word at point (@code{ispell-word}).
281 @item M-@key{TAB}
282 @itemx @key{ESC} @key{TAB}
283 Complete the word before point based on the spelling dictionary
284 (@code{ispell-complete-word}).
285 @item M-x ispell
286 Spell-check the active region or the current buffer.
287 @item M-x ispell-buffer
288 Check and correct spelling of each word in the buffer.
289 @item M-x ispell-region
290 Check and correct spelling of each word in the region.
291 @item M-x ispell-message
292 Check and correct spelling of each word in a draft mail message,
293 excluding cited material.
294 @item M-x ispell-change-dictionary @key{RET} @var{dict} @key{RET}
295 Restart the Aspell or Ispell process, using @var{dict} as the dictionary.
296 @item M-x ispell-kill-ispell
297 Kill the Aspell or Ispell subprocess.
298 @end table
299
300 @cindex Flyspell mode
301 @findex flyspell-mode
302 Flyspell mode is a fully-automatic way to check spelling as you edit
303 in Emacs. It operates by checking words as you change or insert them.
304 When it finds a word that it does not recognize, it highlights that
305 word. This does not interfere with your editing, but when you see the
306 highlighted word, you can move to it and fix it. Type @kbd{M-x
307 flyspell-mode} to enable or disable this mode in the current buffer.
308
309 When Flyspell mode highlights a word as misspelled, you can click on
310 it with @kbd{Mouse-2} to display a menu of possible corrections and
311 actions. You can also correct the word by editing it manually in any
312 way you like.
313
314 @findex flyspell-prog-mode
315 Flyspell Prog mode works just like ordinary Flyspell mode, except that
316 it only checks words in comments and string constants. This feature
317 is useful for editing programs. Type @kbd{M-x flyspell-prog-mode} to
318 enable or disable this mode in the current buffer.
319
320 The other Emacs spell-checking features check or look up words when
321 you give an explicit command to do so.
322
323 @kindex M-$
324 @findex ispell-word
325 To check the spelling of the word around or before point, and
326 optionally correct it as well, use the command @kbd{M-$}
327 (@code{ispell-word}). If the word is not correct, the command offers
328 you various alternatives for what to do about it.
329
330 @findex ispell-buffer
331 @findex ispell-region
332 To check the entire current buffer, use @kbd{M-x ispell-buffer}. Use
333 @kbd{M-x ispell-region} to check just the current region. To check
334 spelling in an email message you are writing, use @kbd{M-x
335 ispell-message}; that command checks the whole buffer, except for
336 material that is indented or appears to be cited from other messages.
337
338 @findex ispell
339 @cindex spell-checking the active region
340 The @kbd{M-x ispell} command spell-checks the active region if the
341 Transient Mark mode is on (@pxref{Transient Mark}), otherwise it
342 spell-checks the current buffer.
343
344 Each time these commands encounter an incorrect word, they ask you
345 what to do. They display a list of alternatives, usually including
346 several ``near-misses''---words that are close to the word being
347 checked. Then you must type a single-character response. Here are
348 the valid responses:
349
350 @table @kbd
351 @item @key{SPC}
352 Skip this word---continue to consider it incorrect, but don't change it
353 here.
354
355 @item r @var{new} @key{RET}
356 Replace the word (just this time) with @var{new}. (The replacement
357 string will be rescanned for more spelling errors.)
358
359 @item R @var{new} @key{RET}
360 Replace the word with @var{new}, and do a @code{query-replace} so you
361 can replace it elsewhere in the buffer if you wish. (The replacements
362 will be rescanned for more spelling errors.)
363
364 @item @var{digit}
365 Replace the word (just this time) with one of the displayed
366 near-misses. Each near-miss is listed with a digit; type that digit to
367 select it.
368
369 @item a
370 Accept the incorrect word---treat it as correct, but only in this
371 editing session.
372
373 @item A
374 Accept the incorrect word---treat it as correct, but only in this
375 editing session and for this buffer.
376
377 @item i
378 Insert this word in your private dictionary file so that Aspell or Ispell will
379 consider it correct from now on, even in future sessions.
380
381 @item u
382 Insert the lower-case version of this word in your private dic@-tion@-ary
383 file.
384
385 @item m
386 Like @kbd{i}, but you can also specify dictionary completion
387 information.
388
389 @item l @var{word} @key{RET}
390 Look in the dictionary for words that match @var{word}. These words
391 become the new list of ``near-misses''; you can select one of them as
392 the replacement by typing a digit. You can use @samp{*} in @var{word} as a
393 wildcard.
394
395 @item C-g
396 Quit interactive spell checking, leaving point at the word that was
397 being checked. You can restart checking again afterward with @kbd{C-u
398 M-$}.
399
400 @item X
401 Same as @kbd{C-g}.
402
403 @item x
404 Quit interactive spell checking and move point back to where it was
405 when you started spell checking.
406
407 @item q
408 Quit interactive spell checking and kill the Ispell subprocess.
409
410 @item C-l
411 Refresh the screen.
412
413 @item C-z
414 This key has its normal command meaning (suspend Emacs or iconify this
415 frame).
416
417 @item ?
418 Show the list of options.
419 @end table
420
421 @findex ispell-complete-word
422 The command @code{ispell-complete-word}, which is bound to the key
423 @kbd{M-@key{TAB}} in Text mode and related modes, shows a list of
424 completions based on spelling correction. Insert the beginning of a
425 word, and then type @kbd{M-@key{TAB}}; the command displays a
426 completion list window. (If your window manager intercepts
427 @kbd{M-@key{TAB}}, type @kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.) To
428 choose one of the completions listed, click @kbd{Mouse-2} or
429 @kbd{Mouse-1} fast on it, or move the cursor there in the completions
430 window and type @key{RET}. @xref{Text Mode}.
431
432 @ignore
433 @findex reload-ispell
434 The first time you use any of the spell checking commands, it starts
435 an Ispell subprocess. The first thing the subprocess does is read your
436 private dictionary, which defaults to the file @file{~/ispell.words}.
437 Words that you ``insert'' with the @kbd{i} command are added to that
438 file, but not right away---only at the end of the interactive
439 replacement procedure. Use the @kbd{M-x reload-ispell} command to
440 reload your private dictionary if you edit the file outside of Ispell.
441 @end ignore
442
443 @cindex @code{ispell} program
444 @findex ispell-kill-ispell
445 Once started, the Aspell or Ispell subprocess continues to run
446 (waiting for something to do), so that subsequent spell checking
447 commands complete more quickly. If you want to get rid of the
448 process, use @kbd{M-x ispell-kill-ispell}. This is not usually
449 necessary, since the process uses no time except when you do spelling
450 correction.
451
452 @vindex ispell-dictionary
453 Ispell and Aspell use two dictionaries together for spell checking: the
454 standard dictionary and your private dictionary. The variable
455 @code{ispell-dictionary} specifies the file name to use for the
456 standard dictionary; a value of @code{nil} selects the default
457 dictionary. The command @kbd{M-x ispell-change-dictionary} sets this
458 variable and then restarts the subprocess, so that it will use
459 a different standard dictionary.
460
461 @vindex ispell-complete-word-dict
462 Aspell and Ispell use a separate dictionary for word completion.
463 The variable @code{ispell-complete-word-dict} specifies the file name
464 of this dictionary. The completion dictionary must be different
465 because it cannot use root and affix information. For some languages
466 there is a spell checking dictionary but no word completion
467 dictionary.
468
469 @ignore
470 arch-tag: 3359a443-96ed-448f-9f05-c8111ba8eac0
471 @end ignore