そのUTF-8エンコーディングエラーが発生した場合は、hunspell他のエンコーディングを指定する引数を使用してプロセスが実行されていることを意味します。たとえば、プロセスリストを確認すると、起動するとEmacsに対するこの子プロセスが表示されます。
/usr/bin/hunspell -a -B -i iso-8859-1
このispell-get-coding-system関数は、使用するエンコーディングを決定するものであり、ispell-dictionary-alistEmacsに知られているすべての言語をリストしているように見える大きな変数を調べることによって行われます。この関数は通常、チェックする言語に一致するエントリの最後の記号を取得します。私がわざわざ理解しなかった何らかの理由で、このリストはiso-8859-1英語用です—代わりに、実際のバッファのエンコーディングに注意を払っています。私は知っている、それは意味をなさないようだ。しかし、私たちは続けます。
変数に独自の値を設定し、8つのパラメーターの最後としてispell-dictionary-alist使用することで、これをオーバーライドできると考えられます。utf-8
;; 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)))
(load-library "ispell")しかし、最初に行った.emacsかどうか、またはそれらのいずれかの内部で行ったかどうかにかかわらず、この設定を実際に機能させることはできませんでした。
;; Did not work for me either.
(eval-after-load "ispell" '(progn ...))
いずれにせよ、私が新しいEmacsを起動し、Control-Jを入力し*scratch*て入力し、押すと、作成される巨大な元のリストが表示されます。毎回。ispell-dictionary-alistispell
そこで、この巨大なリストの問題全体をエンドランして、ispell-get-coding-system常にを返すように関数を書き直すことにしましたutf-8。確かに、これは、次に実際にあるファイルを開いたときに私を噛みますがiso-8859-1、とにかくそれを行うことはありませんよね?
.emacsこれを私のファイルに正常に実装するには(まあ、~/.emacs.d/init.elしかしそれはスタックオーバーフローの答えのために非常に多くの入力が必要です)、このコードが必要でした:
;; 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)))))
私は今hunspell、チャンピオンのように立ち上がって働いています!残念ながら、私がそれを機能させるために経験した理由は、その辞書がaspellのものよりもはるかに大きいことを期待していたのですが、同じ単語のいくつかを強調していることがわかります。まあ、私は別のアプローチを試してみます。/usr/share/dict/american-english-huge基本的には、Ubuntuで利用できる辞書をロードできるスペルチェッカーが必要ですが、aspellその範囲を広げようとすると、さまざまな方法で死にました。多分私は幸運になるでしょうhunspell—私達は見るでしょう。