Wenn Sie diese UTF-8-Codierung Fehler bekommen, dann bedeutet es, dass der hunspell
Prozess mit einem Argument ausgeführt wird immer eine andere Codierung angeben. Wenn ich meine Prozessliste überprüfen, zum Beispiel, sehe ich dieses Kind Prozess zu Emacs, sobald es gestartet ist:
/usr/bin/hunspell -a -B -i iso-8859-1
Die ispell-get-coding-system
Funktion ist, was entscheidet, welche Codierung zu verwenden, was es tut, durch die große ispell-dictionary-alist
variable Prüfung das scheint alle Sprachen aufzulisten, die Emacs bekannt sind. Die Funktion greift normalerweise auf das letzte Symbol des Eintrags zu, der der zu überprüfenden Sprache entspricht. Aus irgendeinem Grund, dass ich nicht die Mühe, herauszufinden, diese Liste hat iso-8859-1
für Englisch - anstatt, wissen Sie, achten Sie auf die Codierung in Ihrem tatsächlichen Puffer. Ich weiß, es scheint keinen Sinn zu machen. Aber wir machen weiter.
Sie würden denken, dass Sie dies außer Kraft setzen könnte einen eigenen Wert für die Variable ispell-dictionary-alist
und verwenden utf-8
als letzte der acht Parameter an:
;; I could never get Emacs to pay attention to this
(setq ispell-dictionary-alist
'((nil "[A-Za-z]" "[^A-Za-z]" "[']" t ("-d" "en_US") nil utf-8)))
Aber ich konnte nie diese Einstellung erhalten, um tatsächlich funktionieren, ob oder nicht habe ich ein (load-library "ispell")
erste in meinem .emacs
, oder ob ich habe es innerhalb von einer von denen:
;; Did not work for me either.
(eval-after-load "ispell" '(progn ...))
So oder so, wenn ich ein frisches Emacs gestartet und trat *scratch*
und getippt ispell-dictionary-alist
und drückte Control-J, dann würde die riesige ursprüngliche Liste, die ispell
erstellt, kommen. Jedes Mal.
Also beschloss ich, eine End-Lauf um das gesamte Problem dieser riesigen Liste und einfach schreiben die ispell-get-coding-system
Funktion zu tun immer utf-8
zurückzukehren. Sicher, das wird mich bei dem nächsten Mal beißen, wenn ich eine Datei öffne, die wirklich in iso-8859-1
ist, aber das mache ich sowieso nie, oder?
dies in meinem .emacs
Datei erfolgreich zu implementieren (na ja, ~/.emacs.d/init.el
aber das dauert so viel Typisierung für eine Antwort Stack-Überlauf) erforderlich, um diesen Code:
;; It works! It works! After two hours of slogging, it works!
(if (file-exists-p "/usr/bin/hunspell")
(progn
(setq ispell-program-name "hunspell")
(eval-after-load "ispell"
'(progn (defun ispell-get-coding-system() 'utf-8)))))
Ich habe jetzt hunspell
und Arbeits wie ein Champion! Leider war der ganze Grund, warum ich es funktionierte, in den Hoffnungen, dass sein Wörterbuch weit größer als Aspells war, aber ich sehe, dass es einige der gleichen Wörter hervorhebt. Naja, ich werde es anders versuchen.Ich möchte grundsätzlich eine Rechtschreibprüfung, die mit dem /usr/share/dict/american-english-huge
Wörterbuch geladen werden kann, das auf Ubuntu verfügbar ist, aber aspell
starb auf viele Arten, als ich versuchte, seinen Horizont zu erweitern. Vielleicht werde ich mit hunspell
glücklicher sein - wir werden sehen.
DANKE. Das ist genial. Für die Verwendung einer Sprache wie Schwedisch ist Hunspell viel besser als I/Aspell und selbst wenn ich auf Dateien achten muss, die nicht in utf8 kodiert sind, ist das immer noch großartig. Danke! – monotux
Beim Versuch, den Ansatz zu beschreiben, erhalte ich einen Fehler. Zuerst habe ich 'sudo apt-get install hunspell' dann habe ich eingefügt der Codeblock in meiner .emacs (der letzte mit dem 'if' Konstrukt). Wenn ich versuche, eine Rechtschreibprüfung durchzuführen, bekomme ich Folgendes in \ * Messages \ *:' Neuen Ispell-Prozess starten [deutsch] ... Fehler beim Aktivieren Flyspell-Modus: (Affix- oder Wörterbuchdateien für das Wörterbuch "Englisch" können nicht geöffnet werden. @ (#) Internat ispell Version 3.2.06 (aber wirklich Hunspell 1.2.14)). Was ist das Problem? –
Hat mir sehr geholfen, danke! Obwohl es 2 Stunden gedauert hat, diese Antwort zu finden :) – daroczig