In zwei meiner Pakete habe ich ein Makro, bei dem der Körper von einer in einem defcustom
Formular definierten Variablen abhängt .
Bei der Installation der Pakete von Melpa endet die Byte-Kompilierung mit:
Fehler: Der Wert des Symbols als Variable ist ungültig: meine-definierte-Variable
Dann funktioniert die manuelle Byte-Kompilierung der Datei durch Öffnen in einem Puffer.
Ich habe es mit einem autoload
Cookie versucht, aber immer noch das gleiche Verhalten.
Mir fehlt hier etwas Wichtiges.
byte-compilation
elisp-macros
syl20bnr
quelle
quelle
defcustom
in einem Makrokörper ist das eine seltsame Sache, denn derdefcustom
wird erst bei der Byte-Kompilierung (wo das Makro erweitert wird) wirksam. Das scheint mir nicht viel Sinn zu machen.Antworten:
Die
defcustom
Ausdrücke werden während der Bytekompilierung nicht ausgewertet. Wenn Ihr Makro also erweitert wird, ist die Variable noch nicht vorhanden, da dieser benutzerdefinierte Ausdruck kompiliert, aber nicht ausgeführt wurde. Sie können den Defcustom entweder in eine andere Datei verschieben (die Sie dannrequire
am Anfang Ihrer Datei einfügen), oder Sie können den Defcustom in eine andere Datei einbindeneval-and-compile
.quelle