with-current-buffer
'un bu makro tanımını temel alan bir makro tanımlamaya karar verdiğim için aynı (with-current-buffer ....
tekrarlama kodumda bir trend fark ettim. Bu, şu ana kadar yaptığım şudur:Yapılandırılmamış defmacro'nun gövdesi
(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))))
bu vücut o defun
yerine defmacro
mükemmel çalışır olduğunu geçiş oluyor ancak ne zaman yürütülmektedir asla. Yani dışında neden hiçbir zaman çalıştırılmamış, diğer sorum - bu bir defun'dan daha mantıklı mıdır?
Emacs-23'ün 'Ch f switch-to buffer 'komutunu vermek için:" UYARI: Bu, bir Lisp programında geçici olarak başka bir arabelle çalışma yönteminin DEĞİLDİR! Bunun yerine, "set-buffer" komutunu kullanın. Bu, karmaşasını engeller. pencere tampon yazışmaları ile " – Stefan