Comment configurer hunspell sur un PC Windows?


10

J'ai mes dictionnaires hunspell sur C:\hunspell\. Il contient .dicet .afffichiers pour trois langues: en_GB, en_US, et nb_NO. Les descriptions que je trouve sur le Web sur la façon de faire fonctionner Hunspell dans Emacs me rendent confus.

Quel est le code minimum dont j'ai besoin dans mon fichier init pour pouvoir utiliser ces trois dictionnaires hunspell dans Emacs?

J'ai essayé le code suivant suggéré par un site Web:

(add-to-list 'exec-path "C:/hunspell/bin/")
(setq ispell-program-name (locate-file "hunspell"
                       exec-path exec-suffixes 'file-executable-p))

Mais quand M-x ispell-change-dictionaryje veux changer de dictionnaire , je reçois le message suivant:

ispell-phaf: Aucune entrée correspondante pour nil.



Réponses:


4

Configuration d'Emacs:

(setq ispell-program-name "c:/what-ever-path/hunspell")

;; "en_US" is key to lookup in `ispell-local-dictionary-alist'.
;; Please note it will be passed as default value to hunspell CLI `-d` option
;; if you don't manually setup `-d` in `ispell-local-dictionary-alist`
(setq ispell-local-dictionary "en_US") 

(setq ispell-local-dictionary-alist
      '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8)))

Configuration du dictionnaire Hunspell:

Exécutez hunspell -Ddans la fenêtre dos qui listera les répertoires hunspell recherchant des dictionnaires. Copiez vos dictionnaires dans ce répertoire. Il s'agit de la configuration minimale dont vous avez besoin.

Voir http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs.html pour plus de détails techniques.


A travaillé pour moi! Ma configuration avec use-packageest(use-package ispell :config (setq ispell-program-name "C:/Program Files (x86)/hunspell-1.3.2-3-w32-bin/bin/hunspell.exe") (setq ispell-local-dictionary "en_US") (setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))))
Lorem Ipsum

Il suffit de faire (setq ispell-program-name "c: /what-ever-path/hunspell.exe") dans Windows 10 pour hunspell sans autres travaux de configuration pour la vérification de l'orthographe en anglais.
Yu Shen

2

J'ai rencontré ce problème moi-même il y a quelque temps. Si je me souviens bien, la raison pour laquelle vous obtenez ce message d'erreur est parce qu'il hunspellest incapable de se configurer en fonction de l'environnement actuel. Donc, pour y remédier, vous devez configurer les variables hunspellspécifiques ispell. Le code suivant devrait être suffisant pour configurer hunspell pour les dictionnaires anglais:

(require 'flyspell)
(setq ispell-dictionary "english")
(add-to-list 'ispell-local-dictionary-alist '(("english"
                                               "[[:alpha:]]"
                                               "[^[:alpha:]]"
                                               "[']"
                                               t
                                               ("-d" "en_US")
                                               nil
                                               utf-8)))
(setq ispell-hunspell-dictionary-alist ispell-local-dictionary-alist)

La partie importante est la ispell-hunspell-dictionary-alist, elle doit être remplie avec une liste de dictionnaires appropriée, telle que celle donnée dans ispell-local-dictionary-alist.

Il y a cependant pas mal de détails autour de cette liste. Si vous voulez en savoir plus, n'hésitez pas à lire M-x describe-variable ispell-local-dictionary-alist.


+1 il semble y avoir un problème avec la tentative par défaut de remplir le fichier ispell-hunspel-dictionary-alist. Au lieu de (require 'flyspell)vous pourriez envisager(with-eval-after-load "ispell" ...)
Andrew Swann

1

Installez tous les dictionnaires de votre choix à l'emplacement où Hunspell effectue des recherches; trouver cela avec hunspell -D. Une fois installée, cette commande devrait les afficher.

Dans le fichier init, ajoutez simplement ajouter un d'entre eux Par exemple , j'ai en_GBet en_USdictionnaires installés. J'ai, dans mon fichier init, ceci:

(setenv "DICTIONARY" "en_GB")

À l'ouverture d'Emacs, activez simplement flyspell-mode. Emacs devrait dire qu'il est démarré ispell avec le dictionnaire par défaut. Cela signifie en_GBest en action, pour notre exemple. Maintenant, si vous voulez changer, faites simplement M-x ispell-change-dictionaryet donnez le nouveau nom du dictionnaire par exemple en_US. Maintenant, l'autre dictionnaire devrait être en action. Encore une fois, cela sera notifié par Emacs disant qu'il a démarré ispell mais cette fois avec le en_USdictionnaire.


1

En supposant que vous utilisez une version récente d'Emacs (24.4 ou supérieure, si je me souviens bien), tout ce que vous devez faire est de vous assurer que vous utilisez le nom de dictionnaire correct, et Emacs fera le reste automatiquement.

Le problème principal est que Windows utilise un format de description de langue différent, par exemple l'anglais britannique est appelé ENG et l'anglais américain est ENU . Cela signifie que vos fichiers de dictionnaire doivent s'appeler ENU.dic et ENU.aff pour l'anglais américain et ENG.dic et ENG.aff pour l'anglais britannique.

Il peut également être nécessaire d'avoir un dictionnaire "par défaut" ou hunspell peut ne pas être trop content. Vous pouvez également définir la variable d'environnement DICTIONARY pour forcer une valeur par défaut.

Malheureusement, je ne peux pas déterminer comment votre dictionnaire norvégien devrait être appelé. Si vous utilisez les paramètres régionaux norvégiens dans Windows, vous devriez pouvoir vérifier dans Emacs en évaluant:

(getenv "LANG")

Ce qui vous montrera le paramètre qu'Emacs utilise.


0

Ce n'est qu'une supposition, mais vous devez peut-être indiquer la langue que vous souhaitez utiliser comme «par défaut»:

(setq ispell-dictionary "en") ; default dictionary

La valeur par défaut ispell-dictionaryest is nil, il se peut donc que ce soit la cause de votre problème.


Merci Mark, pour ton conseil, mais malheureusement cela ne semble pas changer ma situation. Le message d'erreur apparaît toujours
myotis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.