letの変数を書き換えとか(その2)
試してみたlet内置換。
(defun replace-let-string(pattern replacement) "letの中で置換" (interactive "*sReplace:\nsWiht:") (let ((cp (point)) startlet endlet) (save-excursion (save-restriction (when (goto-let) (setq startlet (point)) (backward-char) (goto-matched-parenthesis) (setq endlet (point)) (narrow-to-region startlet endlet) (goto-char (point-min)) (while (scan-buffer pattern :regexp t :tail t) (replace-match replacement)) )))))
次は変数の候補を取り出したい。ので、如何しても変数をどうにかして捕捉しないと。
(defun get-letvar-region() "letで定義した変数の辺りでナローイング" (interactive) (let ((paren-n 1) (cp (point)) letvar startparen endparen) (when (goto-let) (while (looking-at "[^(]") (forward-char) (when (or (looking-at "[);]")(eobp)) (goto-char cp) (message "letの括弧が見つからない") (quit))) (setq startparen (point)) (set-mark) (goto-matched-parenthesis) (setq endparen (point)) (narrow-to-region startparen endparen))))
之を試して気づいたけどletで書く変数のパターンが結構あって変数部分だけ取り出すのが面倒(ry