emacsでインクリメンタルな日本語検索と言っても限られた環境で
日本語変換にAnthyを使っていて,かつ.emacs.elに
(load-library "anthy") (setq default-input-method "japanese-anthy")
なんてしてemacsで日本語環境を構築してると,C-sでインクリメンタルサーチを行うときに日本語で検索できないと言う,まぁ普通はどうでもいいような問題が発生します.それをなんとか解決できないものかと考えてまして.
考える
Anthyを使わずにemacs標準の謎日本語変換システム*1を使うと,C-sで日本語で検索できます.そこで,
- C-sを入力
- 日本語環境を"japanese"に変更
- isearch-forward実行
- 日本語環境を"japanese-anthy"に戻す
なんてことをすれば,できるんじゃないかと.でも実際は,関数の中だけ日本語環境が"japanese"になれば良いので,最後の"japanese-anthy"は要らないか.
で,書いてみた.
(defun my-isearch () (interactive) (setq default-input-method "japanese") (isearch-forward)) (global-set-key "\C-s" 'my-isearch)
とりあえず動くが,挙動が正直引く.
手順
- まず,何らかのタイミングでAnthyをemacs上で起動させておく
- C-s(この状態で,普通にアルファベットの検索はできる)
- C-\で日本語入力モードに……はならない
- Enterキーを押す
- C-\で日本語入力モードに!
- やったぁ,検索できるぞ
『C-\で日本語入力モードに』が二回出てくる時点で,この手法は間違っているということに気づかねばなるまい.きもいマジきもい.
*1:id:omochist:20070125:1169737491