Возьмите следующий пример макроса, определенный в macro.el.
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
И возьмите следующую функцию, определенную в другом файле , function.el.
(defun some-function ()
(some-macro (do-something)))
Когда function.elбайтовая компиляция будет some-variableсвязана с лексической или динамической привязкой?
Я понимаю, что это зависит от того, использует ли файл -*- lexical-binding: t; -*-, поэтому мой вопрос конкретно касается следующих ситуаций:
- Если
function.elиспользует лексическое связывание, ноmacro.elне использует. - Если
macro.elиспользует лексическое связывание, ноfunction.elне использует.
Имеет ли это значение, если some-varон был объявлен глобальным (с defvar) внутри function.el? Если это так, меня особенно интересует случай, когда это не так .