W dwóch moich pakietach mam makro, w którym treść zależy od zmiennej zdefiniowanej w defcustom
formularzu.
Podczas instalowania pakietów z Melpy kompilacja bajtów kończy się na:
Błąd: Wartość symbolu jako zmienna jest nieważna: moja-defcustom-zmienna
Następnie działa ręczna kompilacja bajtowa pliku poprzez otwarcie go w buforze.
Próbowałem z autoload
plikiem cookie, ale nadal zachowuję się tak samo.
Brakuje mi czegoś ważnego tutaj.
byte-compilation
elisp-macros
syl20bnr
źródło
źródło
defcustom
w ciele makra jest dziwną rzeczą, ponieważdefcustom
wejdzie ono w życie tylko podczas kompilacji bajtów (gdzie makro jest rozwinięte). Nie wydaje mi się to mieć większego sensu.Odpowiedzi:
defcustom
Wyrażenie nie są oceniane podczas kompilacji bajtów, więc gdy makro jest rozwinięty, zmienna nie istnieje jeszcze dlatego, że defcustom został skompilowany, ale nie działają. Możesz albo przenieść defcustom do innego pliku (który następnierequire
na początku pliku), albo możesz owinąć defcustom wewnątrzeval-and-compile
.źródło