Makro z defcustom prowadzi do błędu „Wartość symbolu jako zmienna jest nieważna” podczas kompilacji bajtów


13

W dwóch moich pakietach mam makro, w którym treść zależy od zmiennej zdefiniowanej w defcustomformularzu.

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 autoloadplikiem cookie, ale nadal zachowuję się tak samo.

Brakuje mi czegoś ważnego tutaj.


1
Zależnie od a defcustomw ciele makra jest dziwną rzeczą, ponieważ defcustomwejdzie ono w życie tylko podczas kompilacji bajtów (gdzie makro jest rozwinięte). Nie wydaje mi się to mieć większego sensu.
lunaryorn,

Dziękuję Sebastianowi, masz rację i wyjaśnia wiele rzeczy.
syl20bnr

Odpowiedzi:


15

defcustomWyraż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ępnie requirena początku pliku), albo możesz owinąć defcustom wewnątrz eval-and-compile.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.