検索した文字列を対象に置換

この前書いていたのを適当にやってみたとか。
■具体的にすること
 C-sでisearchしている時にM-rで検索していた対象を置換。とか。試してみたけど何か微妙。やっぱりりpickup-patternとか使って、自前で色付けたほうがいいのかもしれない。

(defun isearch-replace()
  (interactive)
  (let ((pattern ed::*isearch-current-string*)
		(replacement (read-string "sReplace:")))
	(if (stringp pattern)
		(replace-string pattern replacement)
	  (message "~A is not string" pattern))
	))

(define-key *isearch-map* #\M-r 'isearch-replace)

正規表現の置換を試そうかと思ったけど、re-builderのソースがEmacsらしくて色々変えないと駄目っぽい感じ。ed::*last-search-regexp*とか使ってくれてるかと期待してたけど、re-builder自身もxyzzyで応用が利くようにするには結構改造した方が良いようなふいんき