En dos de mis paquetes tengo una macro donde el cuerpo depende de una variable definida en un defcustom
formulario.
Al instalar los paquetes de Melpa, la compilación de bytes termina con:
Error: el valor del símbolo como variable es nulo: my-defcustom-variable
Luego, manualmente compila byte el archivo abriéndolo en un búfer funciona.
Intenté con una autoload
cookie pero todavía tengo el mismo comportamiento.
Me estoy perdiendo algo importante aquí.
byte-compilation
elisp-macros
syl20bnr
fuente
fuente
defcustom
cuerpo en una macro es algo extraño, yadefcustom
que solo entrará en vigor durante la compilación de bytes (donde la macro se expande). Esto no parece tener mucho sentido para mí.Respuestas:
Las
defcustom
expresiones no se evalúan durante la compilación de bytes, por lo que cuando la macro se expande, la variable aún no existe porque esa definición se compiló pero no se ejecutó. Puede mover el defcustom a otro archivo (que luegorequire
al principio de su archivo), o puede envolver el defcustom dentroeval-and-compile
.fuente