comment-regionとかを修正
コメントをもらったので、その内容をもとに前に作ったcomment-regionなどを修正しました。
- scan-bufferよりreplace-bufferを使ったほうが楽
- 範囲を限定するときはsave-restrictionを使ってからnarrow-to-regionを使う。
コード
;;重複を省くためのマクロ (defmacro do-action-region3 (name pattern replacement) `(defun ,name (beg end) (interactive "r") (when (> beg end) (rotatef beg end)) (save-excursion (goto-char beg) (save-restriction (narrow-to-region beg end) (replace-buffer ,pattern ,replacement :regexp t))))) ;;comment-region (let* ((s *comment-symbols*) (word (concat s s " \\0"))) (do-action-region3 comment-region "^.+\$" word)) ;;uncomment-region (do-action-region3 uncomment-region (concat "^\\([ \t]*\\)" *comment-symbols* "+") "\\1")