Une macro avec defcustom entraîne l'erreur «La valeur du symbole car la variable est nulle» lors de la compilation d'octets


13

Dans deux de mes packages, j'ai une macro où le corps dépend d'une variable définie dans un defcustomformulaire.

Lors de l'installation des packages depuis Melpa, la compilation d'octets se termine par:

Erreur: la valeur du symbole en tant que variable est vide: my-defcustom-variable

Ensuite, la compilation d'octets manuellement le fichier en l'ouvrant dans un tampon fonctionne.

J'ai essayé avec un autoloadcookie mais j'ai toujours le même comportement.

Il me manque quelque chose d'important ici.


1
Dépendre d'un defcustomdans un corps de macro est une chose étrange à faire, car la defcustomvolonté n'entrera en vigueur que lors de la compilation d'octets (où la macro est développée). Cela ne semble pas avoir beaucoup de sens pour moi.
lunaryorn

Merci Sébastien, tu as raison et ça explique beaucoup de choses.
syl20bnr

Réponses:


15

Les defcustomexpressions ne sont pas évaluées lors de la compilation d'octets, donc lorsque votre macro est développée, la variable n'existe pas encore car ce defcustom a été compilé mais pas exécuté. Vous pouvez soit déplacer le defcustom vers un autre fichier (que vous avez ensuite requireau début de votre fichier), ou vous pouvez envelopper le defcustom à l'intérieur eval-and-compile.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.