Macro com defcustom leva ao erro "O valor do símbolo como variável inválida" quando compilado por bytes


13

Em dois dos meus pacotes, tenho uma macro em que o corpo depende de uma variável definida em um defcustomformulário.

Ao instalar os pacotes do Melpa, a compilação de bytes termina com:

Erro: o valor do símbolo como variável é nulo: my-defcustom-variable

Em seguida, compilar manualmente o arquivo, abrindo-o em um buffer, funciona.

Eu tentei com um autoloadcookie, mas ainda tenho o mesmo comportamento.

Estou sentindo falta de algo importante aqui.


1
Dependendo do defcustomcorpo de uma macro, é uma coisa estranha a se fazer, pois defcustomela só entrará em vigor durante a compilação de bytes (onde a macro é expandida). Isso não parece fazer muito sentido para mim.
lunaryorn

Obrigado Sebastian, você está certo e isso explica muitas coisas.
precisa

Respostas:


15

A defcustomexpressão não é avaliada durante a compilação de bytes, portanto, quando sua macro é expandida, a variável ainda não existe porque esse defcustom foi compilado, mas não executado. Você pode mover o defcustom para outro arquivo (que você então requireinicia no início do arquivo) ou pode agrupar o defcustom dentro eval-and-compile.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.