Hier ist ein Mindestarbeitsbeispiel, um das Problem zu demonstrieren. Sie müssen das use-packagePaket installiert haben:
(use-package ido
:config
(progn
(defun dummy/function ()
(interactive)
(message "I am in the dummy function."))))
Wenn ich versuche, der dummy/functionVerwendung 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-packageWrapper, das mit der Edebug-Instrumentierung in Konflikt gerät? Wie kann es behoben werden?
use-packageWrappers 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-defundebuggt das Top-Level-Formular, das in diesem Fall (use-package ...)eher das Selbst als das Defun ist, das Sie an das use-packageMakro übergeben. Können Sie edebug-on-entryden Namen der von Ihnen definierten Funktion verwenden und angeben?
debug, nicht edebug. Zum Beispiel M-x debug-on-entry. HTH.
dummy/functionbehebt 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.