12

誰かがとのための作業設定を持っていますhunspellEmacs?に設定するだけispell-program-namehunspellは機能しません。出力(たとえば、flyspellを使用する場合)は次のようになります。

-> UTF-8 encoding error. Missing continuation byte in 0. character position: - 9631: word not found

(私のファイルは通常UTF-8でエンコードされています)

私はいくつかの異なるセットアップを見てきましたが、それらはすべて何らかの形で失敗しました。エンコーディングが正常に機能する場合、通常は適切な辞書を見つけるのに問題があります。

実用的なソリューションを持っている人はいますか?2つの辞書(デフォルトはスウェーデン語の辞書と二次英語)を切り替えることができれば便利ですが、何かを実行している方がさらに良いでしょう。

4

3 に答える 3

15

その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—私達は見るでしょう。

于 2010-11-06T02:30:12.243 に答える
0

http://www.mail-archive.com/gnu-emacs-sources@gnu.org/msg01709.html

于 2010-10-19T06:30:59.873 に答える
0

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

追加

;; 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")

あなたのに~/.emacs

私の辞書ファイルはにありました/usr/share/hunspell

于 2017-02-23T22:09:01.473 に答える