Ho notato una tendenza nel mio codice di ripetere lo stesso (with-current-buffer ....
ripetutamente così ho deciso di definire una macro basata su quella definizione di macro di with-current-buffer
- questo è quello che ho finora:Corpo di defmacro non eseguito
(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))))
Il corpo di questo è mai realizzazione, tuttavia quando è commutato defun
anziché defmacro
è non funziona perfettamente. Quindi, a parte il numero , perché il corpo non è mai stato eseguito, la mia altra domanda è - ha più senso come macro rispetto a un defun?
Per citare "Ch f switch-to-buffer' di Emacs-23:" ATTENZIONE: NON è il modo di lavorare temporaneamente su un altro buffer all'interno di un programma Lisp !, invece di usare "set-buffer" .Questo evita lo schermaggio con le corrispondenze del buffer di finestre " – Stefan