Em dois dos meus pacotes, tenho uma macro em que o corpo depende de uma variável definida em um defcustom
formulá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 autoload
cookie, mas ainda tenho o mesmo comportamento.
Estou sentindo falta de algo importante aqui.
byte-compilation
elisp-macros
syl20bnr
fonte
fonte
defcustom
corpo de uma macro, é uma coisa estranha a se fazer, poisdefcustom
ela só entrará em vigor durante a compilação de bytes (onde a macro é expandida). Isso não parece fazer muito sentido para mim.Respostas:
A
defcustom
expressã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ãorequire
inicia no início do arquivo) ou pode agrupar o defcustom dentroeval-and-compile
.fonte