Выбрать главу

Type: Esc x flyspell-buffer Enter

Flyspell highlights misspelled words (Mac OS X).

Flyspell highlights misspelled words in red. Words that are repeatedly misspelled are highlighted in yellow. Note that it doesn't highlight the proper names we inserted in the dictionary earlier using Ispell; Flyspell checks to see whether words are in your personal dictionary before highlighting them as errors.

You move to a misspelled word and press the middle mouse button to display a pop-up menu of possible replacements. (This implies that you have a three-button mouse, and, to be honest, you need one to make Flyspell work properly.) You select a replacement using the mouse.

Move the cursor to crse and press the middle mouse button.

Flyspell displays a pop-up window of alternatives; you choose one with the mouse (Mac OS X).

Choose curse with the mouse.

Emacs inserts the correct replacement (Mac OS X).

Ispell inserts new words in the dictionary. Flyspell takes it a step further, creating word abbreviations for words that you misspell. In essence, a word abbreviation tells Emacs, in this case, that wrd is just an abbreviation for word, and that therefore Emacs should replace it automatically. If you turn on word abbreviation mode, described in the next section, chronic misspellings that Flyspell encounters will be automatically corrected.

How can you tell Flyspell is using word abbreviations? When you exit a session in which you've used Flyspell, you see a prompt that says, Save abbrevs in ~/.abbrev_defs (y or n). This automatic correction won't occur without turning on word abbreviation mode, whether in your startup or manually. Read the section on this topic in this chapter for more details.

What do you do if you encounter a word that's spelled correctly but that Flyspell doesn't recognize? You could insert it in your Ispell dictionary if it's a word you use frequently. The Save word option on the Flyspell pop-up menu handles this. For a temporary fix, the options Accept buffer and Accept session tell Flyspell to accept a word for the current buffer or for all buffers in the current Emacs session automatically. Of course, if it's a word you use frequently, you may want to insert it in the Ispell dictionary to keep Flyspell from flagging it each time.

To enter flyspell mode automatically, add this line to your .emacs file:

(setq-default flyspell-mode t)

Table 3-6 summarizes the Ispell and Flyspell commands.

Table 3-6. Spell-checking commands

Keystrokes Command name Action
M-$ ToolsSpell CheckingSpell-Check Word ispell-word Check the word the cursor is on or the word following the cursor.
(none)ToolsSpell CheckingSpell-Check Region ispell-region Check spelling of the region.
(none)ToolsSpell CheckingSpell-Check Buffer ispell-buffer Check spelling of the buffer.
(none)ToolsSpell CheckingSpell-Check Message ispell-message Check spelling of the body of a mail message.
(none)ToolsSpell CheckingSpell-Check Comments ispell-comments-and-strings Check spelling of comments and strings in a program.
C-u M-$ ToolsSpell CheckingContinue Spell-Checking ispell-continue Resume Ispell; it works only if stopped Ispell with C-g.
(none) ispell-kill-ispell Kill the Ispell process, which continues to run in the background after it is invoked.
M-Tab ToolsSpell CheckingComplete Word ispell-complete-word In text mode, list possible completions for the current word.
(none)ToolsSpell CheckingAutomatic Spell-Checking (Flyspell) flyspell-mode Enter the Flyspell minor mode, in which incorrectly spelled words are highlighted.
(none) flyspell-buffer Spell-check the current buffer, underlining all misspelled words. Use middle mouse button to correct.

3.4 Word Abbreviations

Word abbreviation mode and dynamic abbreviations are two features that lazy typists will love. The authors proudly include themselves in that category, so you'll be in good company if you choose to explore these features. Dynamic abbreviations are less complex, so we'll discuss them first.

3.4.1 Dynamic Abbreviations

Let's say that you are a scientist writing a paper on invertebrates. You're likely to have many long technical words in your paper, and if you're like us, you get tired of typing long words.

Dynamic abbreviations come to the rescue. After you've typed a long word once, you can simply type a few letters and give the command M-/ (for dabbrev-expand). Emacs inserts the nearest word that starts with that string.