同じことを何度も繰り返すというコードの傾向に気付いた(with-current-buffer ....
ので、そのマクロ定義に基づいてマクロを定義することにしましたwith-current-buffer
-これは私がこれまでに持っているものです:
(defmacro with-assembla-buffer(asm-buffer-name heading-str &rest body)
"Create buffer with name of ASM-BUFFER-NAME, or uses it if exists,
preps it with readonly/erase/heading - executes `body' - then puts
readonly back on, goes to beginning of buffer, and switches to it."
(with-current-buffer (get-buffer-create asm-buffer-name)
(assembla-mode)
(toggle-read-only -1)
(erase-buffer)
(insert (format "-- %s --------------------" heading-str))
(newline)
`(progn ,@body)
(toggle-read-only 1)
(goto-char (point-min))
(switch-to-buffer (current-buffer))))
これの本体は決して実行されませんが、defun
代わりに切り替えられた場合defmacro
は完全に機能します。body が実行されない理由は別として、私のもう 1 つの質問は、これは defun よりもマクロとして意味がありますか?