Macro với defcustom dẫn đến giá trị của Symbol Symbol là biến là void Lỗi khi biên dịch byte


13

Trong hai gói của tôi, tôi có một macro trong đó phần thân phụ thuộc vào một biến được xác định trong một defcustombiểu mẫu.

Khi cài đặt các gói từ Melpa, quá trình biên dịch byte kết thúc bằng:

Lỗi: Giá trị của biểu tượng là biến là void: biến my-defcustom-biến

Sau đó, biên dịch byte thủ công tệp bằng cách mở tệp trong bộ đệm hoạt động.

Tôi đã thử với một autoloadcookie nhưng vẫn có hành vi tương tự.

Tôi đang thiếu một cái gì đó quan trọng ở đây.


1
Tùy thuộc vào một defcustomcơ thể macro là một điều kỳ lạ để làm, vì ý defcustomchí sẽ chỉ có hiệu lực trong quá trình biên dịch byte (nơi macro được mở rộng). Điều này dường như không có ý nghĩa nhiều với tôi.
lunaryorn

Cảm ơn Sebastian, bạn đã đúng và nó giải thích rất nhiều điều.
syl20bnr

Câu trả lời:


15

Các defcustombiểu hiện không được đánh giá trong byte biên dịch, vì vậy khi macro của bạn được mở rộng, biến không tồn tại nhưng vì defcustom đã được biên dịch nhưng không chạy. Bạn có thể di chuyển defcustom sang một tệp khác (lúc đó bạn requireở phần đầu của tệp) hoặc bạn có thể bọc defcustom bên trong eval-and-compile.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.