Macro con defcustom conduce al error "El valor del símbolo como variable es nulo" cuando se compila byte


13

En dos de mis paquetes tengo una macro donde el cuerpo depende de una variable definida en un defcustomformulario.

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 autoloadcookie pero todavía tengo el mismo comportamiento.

Me estoy perdiendo algo importante aquí.


1
Dependiendo de un defcustomcuerpo en una macro es algo extraño, ya defcustomque solo entrará en vigor durante la compilación de bytes (donde la macro se expande). Esto no parece tener mucho sentido para mí.
lunaryorn

Gracias Sebastian, tienes razón y explica muchas cosas.
syl20bnr

Respuestas:


15

Las defcustomexpresiones 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 luego requireal principio de su archivo), o puede envolver el defcustom dentro eval-and-compile.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.