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