Comment définir le dictionnaire ispell pour tous les fichiers situés sous un répertoire spécifique
Question
Comment puis-je (automatiquement) définir le dictionnaire (par ex.via un appel automatisé à ispell-change-dictionary
) dans une langue spécifique pour chaque fichier situé sous un répertoire particulier ?
Exemple:Je préférerais que la langue standard de mon annuaire soit l'anglais américain (par ex.en définissant (setq ispell-dictionary "en_US-wo_accents")
dans mon .emacs
fichier) mais j'aimerais utiliser l'anglais britannique pour tous les fichiers ci-dessous (ou :sous) le répertoire /home/werner/dissertation/
.Et peut-être en néerlandais pour tous les fichiers sous /home/werner/letters/
.
Je connais la solution qui prescrit d'utiliser -*- ispell-dictionary: "english" -*-
sur la première ligne d'un fichier pour définir le dictionnaire de ce fichier particulier (décrit à EmacsWiki.org).J'aimerais éviter de devoir mettre cette ligne au-dessus de chaque nouveau fichier que je crée.
La solution
Vous pouvez utiliser quelque chose comme (mais cette approche est plus utile lorsque vous souhaitez créer quelque chose de complexe pour des fichiers donnés) :
(defun set-dictionary-hook ()
(when (and (stringp buffer-file-name)
(string-match "/dissertation/" buffer-file-name))
(setq ispell-local-dictionary "ru")))
(add-hook 'find-file-hook 'set-dictionary-hook)
ou vous pouvez le préciser dans .dir-locals.el
comme décrit dans Manuel Emacs - Je pense que ce sera plus simple que la première approche, quelque chose comme :
((tex-mode . ((ispell-local-dictionary . "english"))))
pour les fichiers avec des modes spécifiques, ou
((nil . ((ispell-local-dictionary . "english"))))
pour tous les fichiers