La macro con defcustom porta all'errore "Il valore del simbolo come variabile è nulla" quando viene compilato byte


13

In due dei miei pacchetti ho una macro in cui il corpo dipende da una variabile definita in un defcustommodulo.

Quando si installano i pacchetti da Melpa, la compilazione di byte termina con:

Errore: il valore del simbolo come variabile è nullo: my-defcustom-variabile

Quindi, compilando manualmente il byte byte il file aprendolo in un buffer funziona.

Ho provato con un autoloadcookie ma ho ancora lo stesso comportamento.

Mi manca qualcosa di importante qui.


1
Dipendere da a defcustomin un corpo di macro è una cosa strana da fare, poiché la defcustomvolontà entrerà in vigore solo durante la compilazione di byte (dove la macro viene espansa). Questo non sembra avere molto senso per me.
lunaryorn,

Grazie Sebastian, hai ragione e spiega molte cose.
syl20bnr

Risposte:


15

L' defcustomespressione non viene valutata durante la compilazione di byte, quindi quando la macro viene espansa, la variabile non esiste ancora perché quel defcustom è stato compilato ma non eseguito. Puoi spostare il defcustom in un altro file (che poi requireall'inizio del tuo file), oppure puoi racchiudere il defcustom all'interno eval-and-compile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.