Hier ist ein Mindestarbeitsbeispiel, um das Problem zu demonstrieren. Sie müssen das use-package
Paket installiert haben:
(use-package ido
:config
(progn
(defun dummy/function ()
(interactive)
(message "I am in the dummy function."))))
Wenn ich versuche, der dummy/function
Verwendung eine Edebug-Instrumentierung hinzuzufügen M-x edebug-defun
, wird der Edebug sofort gestartet, als ob ich es bereits getan hätte M-x dummy/function
. Ich muss das durch Schlagen beenden q
. Aber wenn ich es tatsächlich tue M-x dummy/function
, sehe ich nicht, dass der Edebug aktiviert wird.
Gibt es etwas an dem use-package
Wrapper, das mit der Edebug-Instrumentierung in Konflikt gerät? Wie kann es behoben werden?
use-package
Wrappers definiert sind, können problemlos edebuggt werden. Ich möchte alles, was mit Paket X (use-package X ..)
zu tun hat, einpacken, einschließlich meiner benutzerdefinierten Funktionen, die sich auf X beziehen. Wenn jedoch ein Fehler in diesen Funktionen auftritt, muss ich meine Code-Organisation überdenken.
M-x report-emacs-bug
. Seien Sie bereit, ein einfaches Rezept bereitzustellen, das von beginnt emacs -Q
.
edebug-defun
debuggt das Top-Level-Formular, das in diesem Fall (use-package ...)
eher das Selbst als das Defun ist, das Sie an das use-package
Makro übergeben. Können Sie edebug-on-entry
den Namen der von Ihnen definierten Funktion verwenden und angeben?
debug
, nicht edebug
. Zum Beispiel M-x debug-on-entry
. HTH.
dummy/function
behebt das Definieren auf oberster Ebene (dh außerhalb des Use-Package) das unmittelbare Problem? Ich habe die Verwendung anonymer Lambda-Funktionen zugunsten benannter Funktionen eingestellt, um ähnliche Probleme bei Mode-Hooks zu lösen.