Khi có lỗi trong một trong các tệp init của tôi, tôi nhận được một thông báo mơ hồ như thế này khi tôi khởi chạy Emacs:
Warning (initialization): An error occurred while loading /Users/im/.emacs.d/init.elc:
(wrong-type-argument listp helm-find-files-actions)
Nó không cho tôi biết tập tin cấu hình nào trong số nhiều tệp cấu hình của tôi có lỗi hoặc dòng nào. Tìm kiếm các tệp của tôi không giúp được gì vì đoán xem, hàm helm-find-files-actions
này thực sự không xuất hiện trong bất kỳ tệp init nào của tôi. Để theo dõi dòng mã vi phạm, tôi phải làm $ emacs --debug-init
.
Có cách nào để Emacs tự động cho tôi biết đường dây vi phạm ở đâu mà không phải thoát ra và chạy $ emacs --debug-init
không? Tôi biết tôi có thể chia đôi + eval các tệp theo cách thủ công nhưng thậm chí còn chậm hơn. Sẽ tốt hơn rất nhiều nếu, khi có lỗi trong một trong các tệp init của tôi, Emacs có thể:
- cho tôi biết tập tin init nào
- cho tôi biết số dòng có lỗi
- lý tưởng nhất là mở tập tin init đó và đưa tôi đến dòng vi phạm
Điều này có thể xảy ra với Emacs, hay tôi đang sống trong một thế giới giả tưởng?
debug-init
tự động kích hoạt cho lần bắt đầu tiếp theo bất cứ khi nào tệp init của bạn thay đổi không ...
--debug-init
:)
--debug-init
theo mặc định?
(setq debug-on-error t)
và sau đó đánh giáinit.el
lại của bạn - ví dụ: mở nó lên và gõM-x eval-buffer
.