(defmacro cw-open/close-tag (command open-tag close-tag) `(defun ,command (beg end) (interactive "r") (let ((start-tag ,open-tag) (end-tag ,close-tag)) (save-excursion (goto-char beg) (insert start-tag) (goto-char (+ end (length start-tag))) (insert end-tag))))) (cw-open/close-tag cw-enscript-scheme "\n" "\n") (cw-open/close-tag cw-enscript-elisp "\n" "\n") (cw-open/close-tag cw-enscript-c "\n" "\n") (cw-open/close-tag cw-procedure "" "") (cw-open/close-tag cw-constant "" "") (cw-open/close-tag cw-syntax "" "")