Dưới đây là một ví dụ hoạt động tối thiểu để chứng minh vấn đề, bạn sẽ cần use-package
cài đặt gói:
(use-package ido
:config
(progn
(defun dummy/function ()
(interactive)
(message "I am in the dummy function."))))
Khi tôi cố gắng thêm thiết bị edebug vào dummy/function
sử dụng M-x edebug-defun
, nó sẽ khởi động edebug ngay lập tức như thể tôi đã làm M-x dummy/function
. Tôi phải bỏ nó bằng cách đánh q
. Nhưng sau đó khi tôi thực sự làm M-x dummy/function
, tôi không thấy edebug kích hoạt.
Có một cái gì đó về use-package
trình bao bọc gây rối với các thiết bị edebug? Làm thế nào nó có thể được cố định?
use-package
trình bao bọc có thể được chỉnh sửa tốt. Tôi muốn bao bọc mọi thứ liên quan đến gói X bên trong (use-package X ..)
, bao gồm các chức năng tùy chỉnh của tôi liên quan đến X. Nhưng nếu edebug của các chức năng đó là một vấn đề, thì tôi cần phải suy nghĩ lại về tổ chức mã của mình ..
M-x report-emacs-bug
. Hãy chuẩn bị để cung cấp một công thức đơn giản bắt đầu từ emacs -Q
.
edebug-defun
gỡ lỗi hình thức cấp cao nhất, trong trường hợp này là (use-package ...)
chính nó chứ không phải là defun bạn đang chuyển sang use-package
macro. Bạn có thể sử dụng edebug-on-entry
và cho biết tên của hàm bạn đã xác định không?
debug
, không edebug
. Ví dụ , M-x debug-on-entry
. HTH.
dummy/function
ở cấp cao nhất (nghĩa là bên ngoài gói sử dụng) có khắc phục được sự cố ngay lập tức không? Tôi đã ngừng sử dụng các hàm lambda ẩn danh có lợi cho các hàm được đặt tên để xử lý các loại vấn đề tương tự trong hook-mode.