emacs: Spelling
16.4 Checking and Correcting Spelling
=====================================
This section describes the commands to check the spelling of a single
word or of a portion of a buffer. These commands only work if the
spelling checker program Aspell, Ispell or Hunspell is installed. These
programs are not part of Emacs, but one of them is usually installed in
GNU/Linux and other free operating systems. Aspell (aspell)Top.
‘M-$’
Check and correct spelling of the word at point (‘ispell-word’).
If the region is active, do it for all words in the region instead.
‘M-x ispell’
Check and correct spelling of all words in the buffer. If the
region is active, do it for all words in the region instead.
‘M-x ispell-buffer’
Check and correct spelling in the buffer.
‘M-x ispell-region’
Check and correct spelling in the region.
‘M-x ispell-message’
Check and correct spelling in a draft mail message, excluding cited
material.
‘M-x ispell-change-dictionary <RET> DICT <RET>’
Restart the Aspell/Ispell/Hunspell process, using DICT as the
dictionary.
‘M-x ispell-kill-ispell’
Kill the Aspell/Ispell/Hunspell subprocess.
‘M-<TAB>’
‘<ESC> <TAB>’
Complete the word before point based on the spelling dictionary
(‘ispell-complete-word’).
‘M-x flyspell-mode’
Enable Flyspell mode, which highlights all misspelled words.
‘M-x flyspell-prog-mode’
Enable Flyspell mode for comments and strings only.
To check the spelling of the word around or before point, and
optionally correct it as well, type ‘M-$’ (‘ispell-word’). If a region
is active, ‘M-$’ checks the spelling of all words within the region.
Mark. (When Transient Mark mode is off, ‘M-$’ always acts on
the word around or before point, ignoring the region; Disabled
Transient Mark.)
Similarly, the command ‘M-x ispell’ performs spell-checking in the
region if one is active, or in the entire buffer otherwise. The
commands ‘M-x ispell-buffer’ and ‘M-x ispell-region’ explicitly perform
spell-checking on the entire buffer or the region respectively. To
check spelling in an email message you are writing, use ‘M-x
ispell-message’; that command checks the whole buffer, except for
material that is indented or appears to be cited from other messages.
Sending Mail.
When one of these commands encounters what appears to be an incorrect
word, it asks you what to do. It usually displays a list of numbered
“near-misses”—words that are close to the incorrect word. Then you must
type a single-character response. Here are the valid responses:
‘DIGIT’
Replace the word, just this time, with one of the displayed
near-misses. Each near-miss is listed with a digit; type that
digit to select it.
‘<SPC>’
Skip this word—continue to consider it incorrect, but don’t change
it here.
‘r NEW <RET>’
Replace the word, just this time, with NEW. (The replacement
string will be rescanned for more spelling errors.)
‘R NEW <RET>’
Replace the word with NEW, and do a ‘query-replace’ so you can
replace it elsewhere in the buffer if you wish. (The replacements
will be rescanned for more spelling errors.)
‘a’
Accept the incorrect word—treat it as correct, but only in this
editing session.
‘A’
Accept the incorrect word—treat it as correct, but only in this
editing session and for this buffer.
‘i’
Insert this word in your private dictionary file so that Aspell or
Ispell or Hunspell will consider it correct from now on, even in
future sessions.
‘m’
Like ‘i’, but you can also specify dictionary completion
information.
‘u’
Insert the lower-case version of this word in your private
dictionary file.
‘l WORD <RET>’
Look in the dictionary for words that match WORD. These words
become the new list of near-misses; you can select one of them as
the replacement by typing a digit. You can use ‘*’ in WORD as a
wildcard.
‘C-g’
‘X’
Quit interactive spell checking, leaving point at the word that was
being checked. You can restart checking again afterward with ‘C-u
M-$’.
‘x’
Quit interactive spell checking and move point back to where it was
when you started spell checking.
‘q’
Quit interactive spell checking and kill the spell-checker
subprocess.
‘?’
Show the list of options.
In Text mode and related modes, ‘M-<TAB>’ (‘ispell-complete-word’)
performs in-buffer completion based on spelling correction. Insert the
beginning of a word, and then type ‘M-<TAB>’; this shows a list of
completions. (If your window manager intercepts ‘M-<TAB>’, type ‘<ESC>
<TAB>’ or ‘C-M-i’.) Each completion is listed with a digit or
character; type that digit or character to choose it.
Once started, the Aspell or Ispell or Hunspell subprocess continues
to run, waiting for something to do, so that subsequent spell checking
commands complete more quickly. If you want to get rid of the process,
use ‘M-x ispell-kill-ispell’. This is not usually necessary, since the
process uses no processor time except when you do spelling correction.
Ispell, Aspell and Hunspell look up spelling in two dictionaries: the
standard dictionary and your personal dictionary. The standard
dictionary is specified by the variable ‘ispell-local-dictionary’ or, if
that is ‘nil’, by the variable ‘ispell-dictionary’. If both are ‘nil’,
the spelling program’s default dictionary is used. The command ‘M-x
ispell-change-dictionary’ sets the standard dictionary for the buffer
and then restarts the subprocess, so that it will use a different
standard dictionary. Your personal dictionary is specified by the
variable ‘ispell-personal-dictionary’. If that is ‘nil’, the spelling
program looks for a personal dictionary in a default location.
A separate dictionary is used for word completion. The variable
‘ispell-complete-word-dict’ specifies the file name of this dictionary.
The completion dictionary must be different because it cannot use root
and affix information. For some languages, there is a spell checking
dictionary but no word completion dictionary.
Flyspell mode is a minor mode that performs automatic spell checking
as you type. When it finds a word that it does not recognize, it
highlights that word. Type ‘M-x flyspell-mode’ to toggle Flyspell mode
in the current buffer. To enable Flyspell mode in all text mode
buffers, add ‘flyspell-mode’ to ‘text-mode-hook’. Hooks.
When Flyspell mode highlights a word as misspelled, you can click on
it with ‘mouse-2’ (‘flyspell-correct-word’) to display a menu of
possible corrections and actions. In addition, ‘C-.’ or ‘<ESC>-<TAB>’
(‘flyspell-auto-correct-word’) will propose various successive
corrections for the word at point, and ‘C-c $’
(‘flyspell-correct-word-before-point’) will pop up a menu of possible
corrections. Of course, you can always correct the misspelled word by
editing it manually in any way you like.
Flyspell Prog mode works just like ordinary Flyspell mode, except
that it only checks words in comments and string constants. This
feature is useful for editing programs. Type ‘M-x flyspell-prog-mode’
to enable or disable this mode in the current buffer. To enable this
mode in all programming mode buffers, add ‘flyspell-prog-mode’ to
‘prog-mode-hook’ (Hooks).