I am always looking for new ways to improve my Emacs experience. Months ago, it happened to my spell-checking configuration thanks to the work of Nicolas Petton.
(defvar mu-languages-ring nil "Languages ring for Ispell") (let ((languages '("en_GB" "it_IT"))) (validate-setq mu-languages-ring (make-ring (length languages))) (dolist (elem languages) (ring-insert mu-languages-ring elem))) (defun mu-cycle-ispell-languages () (interactive) (let ((language (ring-ref mu-languages-ring -1))) (ring-insert mu-languages-ring language) (ispell-change-dictionary language)))
This handy code lets me cycle quickly through the languages I need in Flyspell. However, wouldn’t it be easier if Emacs was capable of automatic language detection?
That’s the hole the guess-language package fills.
(use-package guess-language ; Automatically detect language for Flyspell :ensure t :defer t :init (add-hook 'text-mode-hook #'guess-language-mode) :config (setq guess-language-langcodes '((en . ("en_GB" "English")) (it . ("it_IT" "Italian"))) guess-language-languages '(en it) guess-language-min-paragraph-length 45) :diminish guess-language-mode)
Notice how I set
guess-language-langcodes. It has to be set this way to make
guess-language work with my setup for Hunspell.
Support for different languages and language detection for multiple languages in
the same document are provided out of the box.
guess-language is still young,
but it’s already making spell-checking in Emacs so much easier.