Iam 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 Ineed in Flyspell. However, wouldn’t it be easier if Emacs was capable of automatic language detection?
That’sthe 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 (validate-setq guess-language-langcodes '((en . ("en_GB" "English")) (it . ("it_IT" "Italian"))) guess-language-languages '(en it) guess-language-min-paragraph-length 30) :diminish guess-language-mode)Notice how Iset guess-language-langcodes . It has to be set this way to make guess-language work with my setup forHunspell.
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’salready making spell-checking in Emacs so much easier.