Dalam dua paket saya, saya memiliki makro di mana tubuh tergantung pada variabel yang didefinisikan dalam defcustom
formulir.
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 autoload
cookie tetapi masih memiliki perilaku yang sama.
Saya melewatkan sesuatu yang penting di sini.
byte-compilation
elisp-macros
syl20bnr
sumber
sumber
defcustom
di dalam tubuh makro adalah hal yang aneh untuk dilakukan, karenadefcustom
kehendak hanya akan berlaku selama byte-kompilasi (di mana makro diperluas). Ini sepertinya tidak masuk akal bagi saya.Jawaban:
The
defcustom
ekspresi 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 kemudianrequire
di awal file Anda), atau Anda dapat membungkus defcustom di dalameval-and-compile
.sumber