Wie richte ich hunspell auf einem Windows-PC ein?

10

Ich habe meine Hunspell-Wörterbücher bei C:\hunspell\. Es enthält .dicund .affDateien für drei Sprachen: en_GB, en_US, und nb_NO. Die Beschreibungen, die ich im Internet darüber finde, wie man Hunspell in Emacs zum Laufen bringt, machen mich verwirrt.

Was ist der Mindestcode, den ich in meiner Init-Datei benötige, um diese drei Hunspell-Wörterbücher in Emacs verwenden zu können?

Ich habe den folgenden von einer Website vorgeschlagenen Code ausprobiert:

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

Wenn M-x ispell-change-dictionaryich jedoch das Wörterbuch ändern möchte, wird folgende Meldung angezeigt:

ispell-phaf: Kein passender Eintrag für Null.

Myotis
quelle

Antworten:

4

Emacs-Setup:

(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)))

Einrichtung des Hunspell-Wörterbuchs:

Führen Sie das hunspell -DDos-Fenster aus, in dem die Verzeichnisse aufgelistet werden, in denen nach Wörterbüchern gesucht wird. Kopieren Sie Ihre Wörterbücher in dieses Verzeichnis. Dies ist das minimale Setup, das Sie benötigen.

Weitere technische Details finden Sie unter http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs.html .

Chen Bin
quelle
Hat für mich gearbeitet! Mein Setup mit use-packageist(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
Führen Sie einfach (setq ispell-program-name "c: /what-ever-path/hunspell.exe") in Windows 10 für hunspell aus, ohne dass andere Konfigurationsfunktionen für die englische Rechtschreibprüfung funktionieren.
Yu Shen
2

Ich bin vor einiger Zeit selbst auf dieses Problem gestoßen. Wenn ich mich richtig erinnere, erhalten Sie diese Fehlermeldung, weil Sie hunspellsich nicht basierend auf der aktuellen Umgebung konfigurieren können. Um dies zu beheben, müssen Sie die hunspellspezifischen ispellVariablen konfigurieren . Der folgende Code sollte ausreichen, um hunspell für englische Wörterbücher einzurichten:

(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)

Der wichtige Teil ist ispell-hunspell-dictionary-alist, dass er mit einer richtigen Wörterbuchliste gefüllt werden muss, wie der in ispell-local-dictionary-alist.

Es gibt jedoch einige Details rund um diese Liste. Wenn Sie mehr darüber erfahren möchten, können Sie sich gerne darüber informieren M-x describe-variable ispell-local-dictionary-alist.

Xaldew
quelle
+1 Es scheint etwas falsch mit dem Standardversuch zu sein, die zu füllen ispell-hunspel-dictionary-alist. Anstelle von (require 'flyspell)Ihnen könnte in Betracht ziehen(with-eval-after-load "ispell" ...)
Andrew Swann
1

Installieren Sie alle gewünschten Wörterbücher an dem Ort, an dem Hunspell sucht. finde das mit hunspell -D. Nach der Installation sollte dieser Befehl sie anzeigen.

Fügen Sie in der Init-Datei nur eines hinzu. ZB habe ich en_GBund en_USWörterbücher installiert. Ich habe in meiner Init-Datei Folgendes:

(setenv "DICTIONARY" "en_GB")

Aktivieren Sie beim Öffnen von Emacs einfach flyspell-mode. Emacs sollte sagen, dass es mit dem Standardwörterbuch ispell gestartet wird. Dies bedeutet en_GBfür unser Beispiel, dass es in Aktion ist. Wenn Sie jetzt wechseln möchten, M-x ispell-change-dictionarygeben Sie einfach den neuen Wörterbuchnamen ein, z en_US. Jetzt sollte das andere Wörterbuch in Aktion sein. Dies wird wiederum von Emacs mitgeteilt, dass es ispell gestartet hat, diesmal jedoch mit dem en_USWörterbuch.

legends2k
quelle
1

Angenommen, Sie verwenden eine neuere Version von Emacs (24.4 oder höher, wie ich mich erinnere), müssen Sie nur sicherstellen, dass Sie den richtigen Wörterbuchnamen verwenden, und Emacs erledigt den Rest automatisch.

Das Hauptproblem besteht darin, dass Windows ein anderes Sprachbeschreibungsformat verwendet, z. B. Britisches Englisch heißt ENG und US-Englisch ist ENU . Dies bedeutet , dass Ihre Wörterbuch - Dateien sollten aufgerufen werden ENU.dic und ENU.aff für US - Englisch, und ENG.dic und ENG.aff für britisches Englisch.

Es kann auch notwendig sein, ein "Standard" -Wörterbuch zu haben, oder Hunspell ist möglicherweise nicht sehr glücklich. Sie können auch die Umgebungsvariable DICTIONARY festlegen , um einen Standardwert zu erzwingen.

Leider kann ich nicht herausfinden, wie Ihr norwegisches Wörterbuch heißen soll. Wenn Sie das norwegische Gebietsschema in Windows verwenden, sollten Sie in Emacs überprüfen können, indem Sie Folgendes auswerten:

(getenv "LANG")

Welches zeigt Ihnen die Einstellung, die Emacs verwendet.

Alan Dritter
quelle
0

Dies ist nur eine Vermutung, aber vielleicht müssen Sie angeben, welche Sprache Sie als „Standard“ verwenden möchten:

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

Der Standardwert von ispell-dictionaryist nil, möglicherweise ist dies die Ursache für Ihr Problem.

Mark Karpov
quelle
Danke Mark, für deinen Tipp, aber leider scheint es meine Situation nicht zu ändern. Die Fehlermeldung erscheint immer noch
Myotis