Weźmy następujące makro przykładowe, zdefiniowane w macro.el.
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
I przyjąć następującą funkcję zdefiniowaną w innym pliku , function.el.
(defun some-function ()
(some-macro (do-something)))
Kiedy function.elzostanie skompilowany bajtowo, zostanie some-variablepowiązany w powiązaniu leksykalnym lub dynamicznym?
Rozumiem, że zależy to od tego, czy plik używa -*- lexical-binding: t; -*-, więc moje pytanie dotyczy w szczególności następujących sytuacji:
- Jeśli
function.elużywa powiązania leksykalnego, alemacro.elnie używa . - Jeśli
macro.elużywa powiązania leksykalnego, alefunction.elnie używa .
Czy robi to różnicę, jeśli some-varzostał zadeklarowany jako globalny (z defvarsem) w środku function.el? Jeśli tak, jestem szczególnie zainteresowany przypadkiem, w którym tak się nie stało .