@Vamsi's answer already covers general-purpose and selective spell-checking. But what about personalized auto-correction? @Malabarba has a nice post about this topic on his blog. The basic idea is to store pairs of misspelled words and appropriate corrections as Abbrevs. Here is (a slightly modified version of) the code that lets you do this easily:
(defun ispell-word-then-abbrev (p)
"Call `ispell-word'. Then create an abbrev for the correction made.
With prefix P, create local abbrev. Otherwise it will be global."
(interactive "P")
(let ((before (downcase (or (thing-at-point 'word) "")))
after)
(call-interactively 'ispell-word)
(setq after (downcase (or (thing-at-point 'word) "")))
(unless (string= after before)
(define-abbrev
(if p local-abbrev-table global-abbrev-table) before after))
(message "\"%s\" now expands to \"%s\" %sally."
before after (if p "loc" "glob"))))
(define-key ctl-x-map (kbd "C-i") 'ispell-word-then-abbrev)
(setq save-abbrevs t)
(setq-default abbrev-mode t)
With this in place, you can simply
- hit C-x C-i after a misspelled word
- select a correction, and
- never worry about it again
because from now on Emacs will automatically replace the misspelled version of the word with the correction. It's hard to put into words just how useful this is!
If you want to supercharge Emacs' new-found auto-correction capabilities, you can add the abbrevs defined here to your abbrev_defs
file.