Prendi la seguente macro di esempio, definita in macro.el
.
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
E prendere la seguente funzione, definita in un file diverso , function.el
.
(defun some-function ()
(some-macro (do-something)))
Quando function.el
viene compilato byte, verrà some-variable
associato con associazione lessicale o dinamica?
Capisco che dipende dall'utilizzo del file -*- lexical-binding: t; -*-
, quindi la mia domanda riguarda specificamente le seguenti situazioni:
- Se
function.el
utilizza l'associazione lessicale, mamacro.el
non lo fa. - Se
macro.el
utilizza l'associazione lessicale, mafunction.el
non lo fa.
Fa differenza se some-var
è stato dichiarato globale (con un defvar) all'interno function.el
? Se lo fa, sono particolarmente interessato al caso in cui non è così .