Emacs 22 の replace-regexp で \, が使えない

Emacs 22 で追加された \, 機能が使えなくて困っていたら、自分が query-replace-regexp-read-args を override してたからだった。Emacs 21 のときに query-replace-regexp-read-args を上書きする code を .emacs に書いてたら、22 ではこの関数に \, を処理させてたので新機能が使えなくなってた、という顛末。該当部分を comment out したら治った。まあ今頃気付くぐらいなのでそれほど使いまくるわけでもないけど…。

で、query-replace-regexp-read-args を override してた理由だけど、incremental search で使った regexp を replace に流用したいから。replace-regexp を使ってて一番不便に感じることは、正規表現に bug があって何にも match しないようなものを打ち込んでしまってたとき、"replaced 0 occurrences" 位しか feedback が無いことだ。すると bug を見つけるためにあーでもない、こーでもないと何度も query-replace-regexp を呼ぶなどして試行錯誤するハメに陥る。
一方 incremental search *1 はその性質上、複雑な正規表現を incremental に書き上げるのに適してて、debug 時間が非常に短い、というか打ち間違いがあれば即座に見つかるので bug を探す必要が無い。そこで incremental search で正規表現を組み上げてから replace に渡したいと思うのだけど、incremental search は search string を kill (copy) させてくれないっぽい。そこで query-replace-regexp-read-args で incremental search の履歴を参照するようにしたかったんだけど、標準の hook や引数 flag ではうまくいかなかった (この辺の詳細は失念)。
今度もう一度探ってみて、それでだめなら、何か書いて開発 ML に投げてみようか…

*1:C-s の正規表現版ね。標準の binding 忘れたけど。C-u C-s だっけ?