Here in Switzerland, there are four spoken and written languages: Swiss German, French, Italian and Romansh. Also, we converse a lot in German and English. Hence, it's a regular occurrence to have one file with multiple languages in them. Especially for these situations it's important to have proper spell checking. Fortunately, Emacs has us covered!
Emacs has built-in functionality for checking and correcting spelling
ispell.el. On top of that, there's a built-in minor mode for
on-the-fly spell checking called
Flyspell can use multiple back-ends (for example ispell, aspell or hunspell).
Hunspell is a free spell checker and used by LibreOffice, Firefox and
Chromium. It allows to set multiple dictionaries - even different
dictionaries per language (
aspell, for example also allows multiple
dictionaries, but only for the same language).
hunspell, install it first:
apt install hunspell \ hunspell-de-de \ hunspell-en-gb \ hunspell-en-us \ hunspell-de-ch-frami
Then, configure it in your Emacs config with:
(with-eval-after-load "ispell" ;; Configure `LANG`, otherwise ispell.el cannot find a 'default ;; dictionary' even though multiple dictionaries will be configured ;; in next line. (setenv "LANG" "en_US.UTF-8") (setq ispell-program-name "hunspell") ;; Configure German, Swiss German, and two variants of English. (setq ispell-dictionary "de_DE,de_CH,en_GB,en_US") ;; ispell-set-spellchecker-params has to be called ;; before ispell-hunspell-add-multi-dic will work (ispell-set-spellchecker-params) (ispell-hunspell-add-multi-dic "de_DE,de_CH,en_GB,en_US") ;; For saving words to the personal dictionary, don't infer it from ;; the locale, otherwise it would save to ~/.hunspell_de_DE. (setq ispell-personal-dictionary "~/.hunspell_personal")) ;; The personal dictionary file has to exist, otherwise hunspell will ;; silently not use it. (unless (file-exists-p ispell-personal-dictionary) (write-region "" nil ispell-personal-dictionary nil 0))
That's it. Now you've got the full power of ispell and Flyspell set up - even with multiple dictionaries! And you can benefit from that in any major mode. So, whether you're writing Emails, doing project management, writing code, you can be safe that you're protected from typos.
Here's the gist to get going:
M-x flyspell-mode, you'll enable Flyspell mode which
highlights all misspelled words. With
M-$, you'll check and correct
spelling of the word at point. With
M-x ispell-buffer, you'll check
and correct spelling in the buffer. See the docs for all available
functions and keyboard shortcuts.
If you'd like to see this configuration in action, here is it on Github. All of the config is written and documented in literate programming style.
If you're into Emacs, chances are that you're also into Org mode. We're building a free and open source implementation of Org mode without the dependency of Emacs - built for mobile and desktop browsers: https://github.com/200ok-ch/organice/
Enjoy and happy text processing!
write-region instead of calling out to
touch thanks to u/clemera.