Lass Hunspell mit Emacs und deutscher Sprache arbeiten

7

Ich möchte hunspellmit emacs24 und einem deutschen Wörterbuch auf einer Ubuntu 13.04-Box arbeiten.

Dazu habe ich Folgendes installiert hunspellund hunspell-demeiner .emacsDatei hinzugefügt :

(setq ispell-program-name "hunspell")
(setq ispell-dictionary "deutsch8")

Wenn ich eine Datei in Emacs eröffnen und flyspell-bufferich zu bekommen , Starting new Ispell process [[hunspell::deutsch8]]aber es blockiert puffern die Emacs (Maus wird eine rotierende Scheibe zu warten , angibt) und arbeitet für endlose ohne Ergebnisse zeigt. Es muss also etwas mit meiner Konfiguration nicht stimmen.

Ohne die zweite Zeile funktioniert es, aber nur für englische Texte.

Was ist der beste Weg, hunspellum emacs24mit einem deutschen Wörterbuch auf Ubuntu 13.04 einzurichten? Gibt es mögliche Fallstricke?

Schüler
quelle
Beachten Sie, dass die diktonischen Namen für hunspell anders sind als für ispell. Stattdessen (setq ispell-dictionary "deutsch8")sollten Sie verwenden (setq ispell-dictionary "de_DE"). Beachten Sie jedoch, dass hierfür Emacs 24.4 oder höher erforderlich sind. Für frühere Versionen müssen Sie die Definitionen ispell-local-dictionary-alistwie in der akzeptierten Antwort angegeben hinzufügen .
Christian Herenz

Antworten:

6

Um zu überprüfen, ob das Wörterbuch im Pfadlauf aufgeführt ist hunspell -D. Es sollte etwas in diese Richtung ausgeben:

...
/usr/share/hunspell/en_US
/usr/share/hunspell/de_BE
/usr/share/hunspell/de_LU
/usr/share/hunspell/de_DE
...

Fügen Sie als Nächstes Ihre bevorzugten Wörterbücher zu ispell-local-dictionary-alistIhrer .emacsDatei hinzu

(add-to-list 'ispell-local-dictionary-alist '("deutsch-hunspell"
                                              "[[:alpha:]]"
                                              "[^[:alpha:]]"
                                              "[']"
                                              t
                                              ("-d" "de_DE"); Dictionary file name
                                              nil
                                              iso-8859-1))

(add-to-list 'ispell-local-dictionary-alist '("english-hunspell"
                                              "[[:alpha:]]"
                                              "[^[:alpha:]]"
                                              "[']"
                                              t
                                              ("-d" "en_US")
                                              nil
                                              iso-8859-1))

(setq ispell-program-name "hunspell"          ; Use hunspell to correct mistakes
      ispell-dictionary   "deutsch-hunspell") ; Default dictionary to use

Zusätzlich zu , dass Sie eine Funktion definieren , können zwischen dem Deutsch und Englisch Wörterbücher zu wechseln und bindet es C-c dzum Beispiel

(defun switch-dictionary-de-en ()
  "Switch german and english dictionaries."
  (interactive)
  (let* ((dict ispell-current-dictionary)
         (new (if (string= dict "deutsch-hunspell") "english-hunspell"
                   "deutsch-hunspell")))
    (ispell-change-dictionary new)
    (message "Switched dictionary from %s to %s" dict new)))

(global-set-key (kbd "C-c d") 'switch-dictionary-de-en)
stk
quelle
4
Vielen Dank. Ich denke, Sie sollten ein (require 'ispell)vor der (add-to-list 'ispell-local...)Zeile hinzufügen .
Student
1
Ich denke, es wird nicht schaden, wenn ich einen kleinen Kommentar für die Windows-Benutzer hinzufüge, die darauf hereinfallen könnten. In Windows Emacs ist die LANGUmgebungsvariable auf die regionalen Einstellungen festgelegt. Es ist eine gute Idee (setenv "LANG" "en_US"), Ihrer Init-Datei so etwas hinzuzufügen . Dies ist Ihr erstes Wörterbuch, sofern Sie es nicht ändern. Der Standardwert LANGist möglicherweise auf etwas möglicherweise Seltsames (z. B. ENG) festgelegt, wodurch ein ispell / hunspell-Fehler generiert wird.
Antonio
1
@antonio Stimmt, aber in meinem Fall hat (setenv "DICTIONARY" "en_GB")funktioniert.
Legends2k
Die Erstellung von benutzerdefinierten Wörterbucheinträgen für Hunspell ist für Emacs> 24 nicht erforderlich.
Christian Herenz
0

Von https://passingcuriosity.com/2017/emacs-hunspell-and-dictionaries/

Hinzufügen

;; Set $DICPATH to "$HOME/Library/Spelling" for hunspell.
(setenv
  "DICPATH"
  "/path/to/hunspell/dictionary")
;; Tell ispell-mode to use hunspell.
(setq
  ispell-program-name
  "hunspell")

in deine ~/.emacs.

Meine Wörterbuchdateien waren bei /usr/share/hunspell.

Raniere Silva
quelle