В двух моих пакетах у меня есть макрос, тело которого зависит от переменной, определенной в defcustom
форме.
При установке пакетов из Melpa байт-компиляция заканчивается:
Ошибка: значение символа в качестве переменной недействительно: my-defcustom-variable
Затем вручную выполняется байтовая компиляция файла, открывая его в буфере.
Я пытался с autoload
cookie, но по-прежнему такое же поведение.
Я здесь упускаю что-то важное.
byte-compilation
elisp-macros
syl20bnr
источник
источник
defcustom
Странно делать зависимость от тела макроса, посколькуdefcustom
завещание вступает в силу только во время байтовой компиляции (когда макрос раскрывается). Это не имеет особого смысла для меня.Ответы:
defcustom
Выражение не вычисляется во время компиляции байт-, поэтому , когда макрос расширяются, переменная еще не существует , потому что defcustom был составлен , но не запускается. Вы можете переместить defcustom в другой файл (который вы затемrequire
в начале вашего файла), или вы можете обернуть defcustom внутриeval-and-compile
.источник