1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
3 @c 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
8 @cindex mistakes, correcting
10 In this chapter we describe the commands that are especially useful
11 when you catch a mistake in your text after you have made it, or
12 change your mind while composing text on the fly.
14 The most fundamental command for correcting erroneous editing is the
15 undo command @kbd{C-/} (which is also bound to @kbd{C-x u} and
16 @kbd{C-_}). This undoes a single command, or a part of a command (as
17 in the case of @code{query-replace}), or several consecutive
18 self-inserting characters. Consecutive repetitions of @kbd{C-/} undo
19 earlier and earlier changes, back to the limit of the undo information
22 Aside from the commands described here, you can erase text using
23 deletion commands such as @key{DEL} (@code{delete-backward-char}).
24 These were described earlier in this manual. @xref{Erasing}.
27 * Undo:: The Undo commands.
28 * Transpose:: Exchanging two characters, words, lines, lists...
29 * Fixing Case:: Correcting case of last word entered.
30 * Spelling:: Apply spelling checker to a word, or a whole file.
36 @cindex changes, undoing
38 The @dfn{undo} command reverses recent changes in the buffer's text.
39 Each buffer records changes individually, and the undo command always
40 applies to the current buffer. You can undo all the changes in a
41 buffer for as far as back its records go. Usually, each editing
42 command makes a separate entry in the undo records, but some commands
43 such as @code{query-replace} divide their changes into multiple
44 entries for flexibility in undoing. Consecutive character insertion
45 commands are usually grouped together into a single undo record, to
46 make undoing less tedious.
52 Undo one entry in the current buffer's undo records (@code{undo}).
59 To begin to undo, type @kbd{C-/} (or its aliases, @kbd{C-_} or
60 @kbd{C-x u})@footnote{Aside from @kbd{C-/}, the @code{undo} command is
61 also bound to @kbd{C-x u} because that is more straightforward for
62 beginners to remember: @samp{u} stands for ``undo''. It is also bound
63 to @kbd{C-_} because typing @kbd{C-/} on some text-only terminals
64 actually enters @kbd{C-_}.}. This undoes the most recent change in
65 the buffer, and moves point back to where it was before that change.
67 Consecutive repetitions of @kbd{C-/} (or its aliases) undo earlier
68 and earlier changes in the current buffer. If all the recorded
69 changes have already been undone, the undo command signals an error.
73 Any command other than an undo command breaks the sequence of undo
74 commands. Starting from that moment, the entire sequence of undo
75 commands that you have just performed are themselves placed into the
76 undo record, as a single set of changes. Therefore, to re-apply
77 changes you have undone, type @kbd{C-f} or any other command that
78 harmlessly breaks the sequence of undoing; then type @kbd{C-/} to undo
81 On the other hand, if you want to resume undoing, without redoing
82 previous undo commands, use @kbd{M-x undo-only}. This is like
83 @code{undo}, but will not redo changes you have just undone.
85 If you notice that a buffer has been modified accidentally, the
86 easiest way to recover is to type @kbd{C-/} repeatedly until the stars
87 disappear from the front of the mode line (@pxref{Mode Line}).
88 Whenever an undo command makes the stars disappear from the mode line,
89 it means that the buffer contents are the same as they were when the
90 file was last read in or saved. If you do not remember whether you
91 changed the buffer deliberately, type @kbd{C-/} once. When you see
92 the last change you made undone, you will see whether it was an
93 intentional change. If it was an accident, leave it undone. If it
94 was deliberate, redo the change as described above.
96 @cindex selective undo
98 When there is an active region, any use of @code{undo} performs
99 @dfn{selective undo}: it undoes the most recent change within the
100 region, instead of the entire buffer. However, when Transient Mark
101 mode is off (@pxref{Persistent Mark}), @kbd{C-/} always operates on
102 the entire buffer, ignoring the region. In this case, you can perform
103 selective undo by supplying a prefix argument to the @code{undo}
104 command: @kbd{C-u C-/}. To undo further changes in the same region,
105 repeat the @code{undo} command (no prefix argument is needed).
107 Some specialized buffers do not make undo records. Buffers whose
108 names start with spaces never do; these buffers are used internally by
109 Emacs to hold text that users don't normally look at or edit.
112 @vindex undo-strong-limit
113 @vindex undo-outer-limit
115 When the undo records for a buffer becomes too large, Emacs discards
116 the oldest undo records from time to time (during @dfn{garbage
117 collection}). You can specify how much undo records to keep by
118 setting the variables @code{undo-limit}, @code{undo-strong-limit}, and
119 @code{undo-outer-limit}. Their values are expressed in bytes.
121 The variable @code{undo-limit} sets a soft limit: Emacs keeps undo
122 data for enough commands to reach this size, and perhaps exceed it,
123 but does not keep data for any earlier commands beyond that. Its
124 default value is 80000. The variable @code{undo-strong-limit} sets a
125 stricter limit: any previous command (though not the most recent one)
126 that pushes the size past this amount is forgotten. The default value
127 of @code{undo-strong-limit} is 120000.
129 Regardless of the values of those variables, the most recent change
130 is never discarded unless it gets bigger than @code{undo-outer-limit}
131 (normally 12,000,000). At that point, Emacs discards the undo data and
132 warns you about it. This is the only situation in which you cannot
133 undo the last command. If this happens, you can increase the value of
134 @code{undo-outer-limit} to make it even less likely to happen in the
135 future. But if you didn't expect the command to create such large
136 undo data, then it is probably a bug and you should report it.
137 @xref{Bugs,, Reporting Bugs}.
140 @section Transposing Text
144 Transpose two characters (@code{transpose-chars}).
146 Transpose two words (@code{transpose-words}).
148 Transpose two balanced expressions (@code{transpose-sexps}).
150 Transpose two lines (@code{transpose-lines}).
154 @findex transpose-chars
155 The common error of transposing two characters can be fixed, when they
156 are adjacent, with the @kbd{C-t} command (@code{transpose-chars}). Normally,
157 @kbd{C-t} transposes the two characters on either side of point. When
158 given at the end of a line, rather than transposing the last character of
159 the line with the newline, which would be useless, @kbd{C-t} transposes the
160 last two characters on the line. So, if you catch your transposition error
161 right away, you can fix it with just a @kbd{C-t}. If you don't catch it so
162 fast, you must move the cursor back between the two transposed
163 characters before you type @kbd{C-t}. If you transposed a space with
164 the last character of the word before it, the word motion commands are
165 a good way of getting there. Otherwise, a reverse search (@kbd{C-r})
166 is often the best way. @xref{Search}.
169 @findex transpose-lines
171 @findex transpose-words
172 @c Don't index C-M-t and transpose-sexps here, they are indexed in
173 @c programs.texi, in the "List Commands" node.
175 @c @findex transpose-sexps
176 @kbd{M-t} transposes the word before point with the word after point
177 (@code{transpose-words}). It moves point forward over a word,
178 dragging the word preceding or containing point forward as well. The
179 punctuation characters between the words do not move. For example,
180 @w{@samp{FOO, BAR}} transposes into @w{@samp{BAR, FOO}} rather than
183 @kbd{C-M-t} (@code{transpose-sexps}) is a similar command for
184 transposing two expressions (@pxref{Expressions}), and @kbd{C-x C-t}
185 (@code{transpose-lines}) exchanges lines. They work like @kbd{M-t}
186 except as regards what units of text they transpose.
188 A numeric argument to a transpose command serves as a repeat count: it
189 tells the transpose command to move the character (word, expression, line)
190 before or containing point across several other characters (words,
191 expressions, lines). For example, @kbd{C-u 3 C-t} moves the character before
192 point forward across three other characters. It would change
193 @samp{f@point{}oobar} into @samp{oobf@point{}ar}. This is equivalent to
194 repeating @kbd{C-t} three times. @kbd{C-u - 4 M-t} moves the word
195 before point backward across four words. @kbd{C-u - C-M-t} would cancel
196 the effect of plain @kbd{C-M-t}.@refill
198 A numeric argument of zero is assigned a special meaning (because
199 otherwise a command with a repeat count of zero would do nothing): to
200 transpose the character (word, expression, line) ending after point
201 with the one ending after the mark.
204 @section Case Conversion
208 Convert last word to lower case. Note @kbd{Meta--} is Meta-minus.
210 Convert last word to all upper case.
212 Convert last word to lower case with capital initial.
218 A very common error is to type words in the wrong case. Because of this,
219 the word case-conversion commands @kbd{M-l}, @kbd{M-u} and @kbd{M-c} have a
220 special feature when used with a negative argument: they do not move the
221 cursor. As soon as you see you have mistyped the last word, you can simply
222 case-convert it and go on typing. @xref{Case}.@refill
225 @section Checking and Correcting Spelling
226 @cindex spelling, checking and correcting
227 @cindex checking spelling
228 @cindex correcting spelling
230 This section describes the commands to check the spelling of a
231 single word or of a portion of a buffer. These commands only work if
232 the spelling checker program Aspell, Ispell or Hunspell is installed.
233 Aspell, Ispell or Hunspell are not part of Emacs, but one or the other
234 is usually installed in GNU/Linux and other free operating systems.
236 @xref{Top, Aspell,, aspell, The Aspell Manual}.
241 Check and correct spelling of the active region or the word at point
242 (@code{ispell-word}).
244 Check and correct spelling in the active region or the entire buffer.
245 @item M-x ispell-buffer
246 Check and correct spelling in the buffer.
247 @item M-x ispell-region
248 Check and correct spelling in the region.
249 @item M-x ispell-message
250 Check and correct spelling in a draft mail message, excluding cited
252 @item M-x ispell-change-dictionary @key{RET} @var{dict} @key{RET}
253 Restart the Aspell/Ispell/Hunspell process, using @var{dict} as the dictionary.
254 @item M-x ispell-kill-ispell
255 Kill the Aspell/Ispell/Hunspell subprocess.
257 @itemx @key{ESC} @key{TAB}
258 Complete the word before point based on the spelling dictionary
259 (@code{ispell-complete-word}).
260 @item M-x flyspell-mode
261 Enable Flyspell mode, which highlights all misspelled words.
262 @item M-x flyspell-prog-mode
263 Enable Flyspell mode for comments and strings only.
268 To check the spelling of the word around or before point, and
269 optionally correct it as well, type @kbd{M-$} (@code{ispell-word}).
270 If a region is active, @kbd{M-$} checks the spelling of all words
271 within the region. @xref{Mark}. (When Transient Mark mode is off,
272 @kbd{M-$} always acts on the word around or before point, ignoring the
273 region. @xref{Persistent Mark}.)
276 @findex ispell-buffer
277 @findex ispell-region
278 @cindex spell-checking the active region
279 Similarly, the command @kbd{M-x ispell} performs spell-checking in
280 the region if one is active, or in the entire buffer otherwise. The
281 commands @kbd{M-x ispell-buffer} and @kbd{M-x ispell-region}
282 explicitly perform spell-checking on the entire buffer or the region
283 respectively. To check spelling in an email message you are writing,
284 use @kbd{M-x ispell-message}; that command checks the whole buffer,
285 except for material that is indented or appears to be cited from other
286 messages. @xref{Sending Mail}.
288 When one of these commands encounters what appears to be an
289 incorrect word, it asks you what to do. It usually displays a list of
290 numbered ``near-misses''---words that are close to the incorrect word.
291 Then you must type a single-character response. Here are the valid
296 Replace the word, just this time, with one of the displayed
297 near-misses. Each near-miss is listed with a digit; type that digit
301 Skip this word---continue to consider it incorrect, but don't change it
304 @item r @var{new} @key{RET}
305 Replace the word, just this time, with @var{new}. (The replacement
306 string will be rescanned for more spelling errors.)
308 @item R @var{new} @key{RET}
309 Replace the word with @var{new}, and do a @code{query-replace} so you
310 can replace it elsewhere in the buffer if you wish. (The replacements
311 will be rescanned for more spelling errors.)
314 Accept the incorrect word---treat it as correct, but only in this
318 Accept the incorrect word---treat it as correct, but only in this
319 editing session and for this buffer.
322 Insert this word in your private dictionary file so that Aspell or Ispell
323 or Hunspell will consider it correct from now on, even in future sessions.
326 Like @kbd{i}, but you can also specify dictionary completion
330 Insert the lower-case version of this word in your private dic@-tion@-ary
333 @item l @var{word} @key{RET}
334 Look in the dictionary for words that match @var{word}. These words
335 become the new list of ``near-misses''; you can select one of them as
336 the replacement by typing a digit. You can use @samp{*} in @var{word} as a
341 Quit interactive spell checking, leaving point at the word that was
342 being checked. You can restart checking again afterward with @kbd{C-u
346 Quit interactive spell checking and move point back to where it was
347 when you started spell checking.
350 Quit interactive spell checking and kill the spell-checker subprocess.
353 Show the list of options.
356 @findex ispell-complete-word
357 In Text mode and related modes, the command @kbd{M-@key{TAB}}
358 (@code{ispell-complete-word}) shows a list of completions based on
359 spelling correction. Insert the beginning of a word, and then type
360 @kbd{M-@key{TAB}}; the command displays a completion list window. (If
361 your window manager intercepts @kbd{M-@key{TAB}}, type @kbd{@key{ESC}
362 @key{TAB}} or @kbd{C-M-i}.) To choose one of the completions listed,
363 click @kbd{Mouse-2} or @kbd{Mouse-1} fast on it, or move the cursor
364 there in the completions window and type @key{RET}. @xref{Text Mode}.
366 @cindex @code{ispell} program
367 @findex ispell-kill-ispell
368 Once started, the Aspell or Ispell or Hunspell subprocess continues
369 to run, waiting for something to do, so that subsequent spell checking
370 commands complete more quickly. If you want to get rid of the
371 process, use @kbd{M-x ispell-kill-ispell}. This is not usually
372 necessary, since the process uses no time except when you do spelling
375 @vindex ispell-dictionary
376 @vindex ispell-local-dictionary
377 @vindex ispell-personal-dictionary
378 @vindex ispell-complete-word-dict
379 Ispell, Aspell and Hunspell use two dictionaries together for spell checking:
380 the standard dictionary and your private dictionary. The standard
381 dictionary is specified by @code{ispell-local-dictionary} or,
382 if @code{nil}, by @code{ispell-dictionary}. If both are @code{nil}
383 the default dictionary is selected. The command
384 @kbd{M-x ispell-change-dictionary} sets the standard dictionary for
385 the buffer and then restarts the subprocess, so that it will use a
386 different standard dictionary. Personal dictionary is specified by
387 @code{ispell-personal-dictionary}. If @code{nil}, default value is
390 Set variable @code{ispell-dictionary} to select a specific default
391 dictionary for all your documents. Set variable
392 @code{ispell-local-dictionary} in the local variables section to
393 select a specific dictionary for a given document.
395 A separate dictionary is used for word completion. The variable
396 @code{ispell-complete-word-dict} specifies the file name of this
397 dictionary. The completion dictionary must be different because it
398 cannot use root and affix information. For some languages, there
399 is a spell checking dictionary but no word completion dictionary.
401 @cindex Flyspell mode
402 @findex flyspell-mode
403 @findex turn-on-flyspell
404 Flyspell mode is a fully-automatic way to check spelling as you edit
405 in Emacs. It operates by checking words as you change or insert them.
406 When it finds a word that it does not recognize, it highlights that
407 word. This does not interfere with your editing, but when you see the
408 highlighted word, you can move to it and fix it. Type @kbd{M-x
409 flyspell-mode} to enable or disable this mode in the current buffer.
410 To enable Flyspell mode in all text mode buffers, add
411 @code{turn-on-flyspell} to @code{text-mode-hook}.
413 When Flyspell mode highlights a word as misspelled, you can click on
414 it with @kbd{Mouse-2} to display a menu of possible corrections and
415 actions. You can also correct the word by editing it manually in any
418 @findex flyspell-prog-mode
419 Flyspell Prog mode works just like ordinary Flyspell mode, except
420 that it only checks words in comments and string constants. This
421 feature is useful for editing programs. Type @kbd{M-x
422 flyspell-prog-mode} to enable or disable this mode in the current
423 buffer. To enable this mode in all programming mode buffers, add
424 @code{flyspell-prog-mode} to @code{prog-mode-hook} (@pxref{Hooks}).