Makro mit defcustom führt beim Kompilieren von Bytes zum Fehler "Symbolwert als Variable ist ungültig"


13

In zwei meiner Pakete habe ich ein Makro, bei dem der Körper von einer in einem defcustomFormular 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 autoloadCookie versucht, aber immer noch das gleiche Verhalten.

Mir fehlt hier etwas Wichtiges.


1
Abhängig von a defcustomin einem Makrokörper ist das eine seltsame Sache, denn der defcustomwird erst bei der Byte-Kompilierung (wo das Makro erweitert wird) wirksam. Das scheint mir nicht viel Sinn zu machen.
Lunaryorn

Danke Sebastian, du hast recht und es erklärt eine Menge Dinge.
syl20bnr

Antworten:


15

Die defcustomAusdrü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 dann requiream Anfang Ihrer Datei einfügen), oder Sie können den Defcustom in eine andere Datei einbinden eval-and-compile.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.