« 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)))

とでも書いておけばなんとかなります。

Comments

Post a comment




Remember Me?