Makro dengan defcustom mengarah ke kesalahan "Nilai simbol sebagai variabel tidak sah" ketika byte-dikompilasi

13

Dalam dua paket saya, saya memiliki makro di mana tubuh tergantung pada variabel yang didefinisikan dalam defcustomformulir.

Saat menginstal paket dari Melpa, byte-kompilasi berakhir dengan:

Kesalahan: Nilai simbol sebagai variabel tidak valid: variabel-saya-defcustom

Kemudian, kompilasi byte secara manual file dengan membukanya di buffer berfungsi.

Saya mencoba dengan autoloadcookie tetapi masih memiliki perilaku yang sama.

Saya melewatkan sesuatu yang penting di sini.

syl20bnr
sumber
1
Bergantung pada defcustomdi dalam tubuh makro adalah hal yang aneh untuk dilakukan, karena defcustomkehendak hanya akan berlaku selama byte-kompilasi (di mana makro diperluas). Ini sepertinya tidak masuk akal bagi saya.
lunaryorn
Terima kasih Sebastian, Anda benar dan itu menjelaskan banyak hal.
syl20bnr

Jawaban:

15

The defcustomekspresi tidak dievaluasi selama byte-kompilasi, jadi ketika makro Anda diperluas, variabel belum ada karena defcustom yang disusun tetapi tidak dijalankan. Anda dapat memindahkan defcustom ke file lain (yang Anda kemudian requiredi awal file Anda), atau Anda dapat membungkus defcustom di dalam eval-and-compile.

Stefan
sumber