正規表現を何とか楽に扱えないかとか
結果的にはどれも微妙なのでネタくらいに思ってみてもらう事に。
\が二つあったら一つ減らしてre-search-forwardに近い表記へ変えるとか。けど、あんまり功を奏していない上に、コードもなんか酷い感じ。popup-reigon-reがまだ一番まともな感じはするが、微妙。
reigon-reとpopup-reigon-reは単純にUIが違うだけで、単に\\を\に置換してポップアップするだけ。\を消すと言うのも考えたけど、エスケープシーケンスがらみが面倒なので止めた。
(defun reigon-re(from to) (interactive "r") (let ((str (buffer-substring from to)) re) (narrow-to-region from to) (goto-char (point-min)) (replace-buffer "\\\\\\\\" "\\\\" :regexp t) (setq re (buffer-substring from to)) (delete-region (point-max) (point-min)) (insert str) (widen) (with-output-to-temp-buffer ("*Re Help*" 2) (format t "~A" re)) )) (defun popup-reigon-re(from to) (interactive "r") (let ((str (buffer-substring from to)) re) (narrow-to-region from to) (goto-char (point-min)) (replace-buffer "\\\\\\\\" "\\\\" :regexp t) (setq re (buffer-substring from to)) (delete-region (point-max) (point-min)) (insert str) (widen) (popup-string re (point)) )) (defun re-string-region(from to) (interactive "r") (let ((str (buffer-substring from to))) (delete-region from to) (insert (format nil "~S" str)) ))
popup-reigon-reはこっちの方が良いかな。
(defun popup-reigon-re(from to) (interactive "r") (let ((str (buffer-substring from to))) (setq str (substitute-string str "\\\\\\\\" "\\\\")) (popup-string str (point)) ))
regexp-quoteとかを使うとなんか上手くいくのかもしれないが、どうも上手いやり口が分からない。結局やっぱり色つけるくらいが妥当なのかもしれない。
■最後はやっぱりigsearchとre-builder
そこで、やっぱりigsearchとかで正規表現を楽にしたいわけだけど、igsearchも中々前途多難で、"^"の問題はこの前の更新でどうやら問題があった部分が解消してよくなった。
最近はigsearchがregexpで[とか入力するとエラー出すような気がしてみたりしているが、これは仕様なのかもしれない。ひょっとすると設定の問題なのかもしれないのでまだ定かじゃないが。