xyzzyのmapcar 内で perform-string を使うときの注意点
mapcar で perform-string を使って文字列置換しようと思ってかなりハマったのでメモって置きます。
ダメな例
(mapcar '(lambda (s) (goto-char (point-min)) (perform-replace s "" nil t t nil)) '("foo[0-9]" "bar[0-9]"))
これだと “foo1 bar2” は削除できるけど “bar2” と2個めの検索要素だけしかないときに削除できない
良い例
(mapcar '(lambda (s) (goto-char (point-min)) (perform-replace s "" nil t t t)) '("foo[0-9]" "bar[0-9]"))
perform-replace
の最後の引数NOERROR
をt
に設定しておけば該当する文字列がなくてもスムーズに次に進んでくれます。