Nehmen Sie das folgende Beispielmakro, definiert in macro.el.
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
Nehmen Sie die folgende Funktion, die in einer anderen Datei definiert ist function.el.
(defun some-function ()
(some-macro (do-something)))
Wann function.elwird Byte kompiliert, wird some-variableunter lexikalischer oder dynamischer Bindung gebunden?
Ich verstehe, dass dies davon abhängt, ob die Datei verwendet -*- lexical-binding: t; -*-wird. Meine Frage bezieht sich daher speziell auf die folgenden Situationen:
- Wenn
function.ellexikalische Bindung verwendet, abermacro.elnicht. - Wenn
macro.ellexikalische Bindung verwendet, aberfunction.elnicht.
Macht es einen Unterschied, ob some-vares im Inneren als global (mit einer Defvar) deklariert wurde function.el? Wenn ja, interessiert mich speziell der Fall, in dem dies nicht der Fall ist .