Возьмите следующий пример макроса, определенный в 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
? Если это так, меня особенно интересует случай, когда это не так .