[migemo] migemo 利用時の isearch 以外の lazy-highlight の挙動

M.Fujii boochang at m4.kcn.ne.jp
Sun Jul 31 11:52:25 JST 2005


藤井です。

emacs CVS HEAD では、query-replace などでも lazy-highlight が可能になっ
ているようですが、これに関連して migemo 利用時に lazy-highlight に一部
不具合が生じます。

再現手順は以下のとおりです。

[case 1]
1. emacs (CVS HEAD)を起動し migemo を有効にする。
2. migemo が有効な状態で isearch を行なう。
3. M-x query-replace を実行し、置換する文字列を指定する。
   (ここで複数の文字列が置換されるようにすることがポイント)
4. ここで、置換の対象となる部分がハイライトされるはずだが、
   ハイライトされない。
   (大抵その代わりに migemo で検索した文字列がハイライトされる)

[case 2]
1. emacs (CVS HEAD)を起動し migemo を有効にする。
2. このメールに添付したサンプルファイルを hexl-mode で開く。
3. isearch で "fg" で検索すると、"f" の直後で改行している箇所がハイライ
   トされない。
   (migemo をロードせずに起動した場合と比較すれば一目瞭然だと思います)

私の環境(Meadow 3.00-dev, NTEmacs CVS HEAD)では確実に再現します。
(case 1 はまれに再現しない場合もあるようです)

isearch-lazy-highlight-search を migemo で差し替えていますが、これが悪
さをしているようです。CVS HEAD では isearch 以外でも lazy-highlight を
利用するようになっているので、差し替え部分の再検討が必要なのではないか
と思います。

CVS HEAD では isearch-search-fun-function によって、isearch が呼び出す
検索関数を差し替えることが可能になっています。migemo は
isearch-lazy-highlight-search をまるごと差し替えているので、この機構が
利用されていない状態になっているので、これが問題の原因だと思います。

また、isearch-search-fun-function が設定されているときには、その設定に
よっては migemo を無効にした方が良いのかもしれません。

具体的修正案を提案できてなくてすみませんが、対応宜しくお願いします。

以上です。

--
藤井 正行 / Masayuki FUJII ( boochang at m4.kcn.ne.jp )


Migemo メーリングリストの案内