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.el
zostanie skompilowany bajtowo, zostanie some-variable
powią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.el
używa powiązania leksykalnego, alemacro.el
nie używa . - Jeśli
macro.el
używa powiązania leksykalnego, alefunction.el
nie używa .
Czy robi to różnicę, jeśli some-var
został 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 .