« Error in post-command-hook: (error Selecting deleted buffer) | Main | ア・ラ・カルト~役者と音楽家のいるレストラン »
2005年12月20日
flyspellの表示がおかしい
[ カテゴリ:
Emacsen
]
ながらくflyspellを使ってますが、最近どうも表示がおかしい。 これではさっぱり使い物にならないので、 少しばかりまじめに調べてみました。 具体的には、
hogeほげ
に対して、
hogeほげ
となる問題です。
再現条件は
- aspellを使っていること
- そのバージョンが0.60よりもあたらしいこと
のふたつです。 0.60以降のaspellはUTF-8をまじめにサポートしています。 flyspell(実際にはispell)でそれを検出して、 ispell-dictionary-alistにaspell用の辞書を追加しようとします。
さて、ここで追加される辞書は、
(nil "[[:alpha:]]" "[^[:alpha:]]" "'" t ("-d" "en" "--encoding=utf-8") nil utf-8)
こんなかんじ。 このうち、2番目と3番目の要素が単語を拾い出すのに使われています。 [:alpha:]は、
This matches any letter. (At present, for multibyte characters, it matches anything that has word syntax.)
なので、単語境界に空白のはいる言語であればかなりきれいに動きますが、 日本語のような言語だとうまく動かないのでした。
で、本質的な解決方法ですが、これがよくわかんない。 簡単な逃げとしては、自前の辞書を用意すればよくて、 ~/.emacs.d/init.elに
(setq ispell-local-dictionary-alist
'((nil "[a-zA-Z]" "[^a-zA-Z]" "'" t ("-d" "en" "--encoding=utf-8") nil utf-8)))
とでも書いておけばなんとかなります。