Aquí hay un ejemplo mínimo de trabajo para demostrar el problema, deberá tener el use-package
paquete instalado:
(use-package ido
:config
(progn
(defun dummy/function ()
(interactive)
(message "I am in the dummy function."))))
Cuando intento agregar instrumentación de edebug al dummy/function
uso M-x edebug-defun
, se inicia el edebug de inmediato como si ya lo hubiera hecho M-x dummy/function
. Tengo que dejar eso golpeando q
. Pero cuando realmente lo hago M-x dummy/function
, no veo la activación de edebug.
¿Hay algo sobre el use-package
contenedor que se mete con la instrumentación de edebug? ¿Cómo se puede arreglar?
use-package
edebug
Kaushal Modi
fuente
fuente
dummy/function
en el nivel superior (es decir, fuera de use-package) soluciona el problema inmediato? He dejado de usar funciones lambda anónimas a favor de funciones con nombre para tratar problemas similares en los ganchos de modo.use-package
contenedor se pueden depurar bien. Me gustaría envolver todo lo relacionado con el paquete X dentro(use-package X ..)
, incluidas mis funciones personalizadas relacionadas con X. Pero si edebug de esas funciones es un problema, entonces necesitaría repensar mi organización de código ...M-x report-emacs-bug
. Esté preparado para proporcionar una receta simple que comience desdeemacs -Q
.edebug-defun
depura la forma de nivel superior, que en este caso es la(use-package ...)
propia en lugar de la defun que está pasando a lause-package
macro. ¿Puedes usaredebug-on-entry
y dar el nombre de la función que has definido?debug
, noedebug
. Por ejemplo,M-x debug-on-entry
. HTH.Respuestas:
Cuando lo llama
edebug-defun
, depura el formulario de nivel superior, que en este caso es(use-package ...)
.Puede usar
debug-on-entry
para depurar una función con nombre.fuente
narrow-to-region
)edebug-defun
)widen
)Si te gusta hacer las cosas rápidamente, atajo lispy para esto es N xe W.
fuente
narrow-to-defun
reduce a la misma(use-package ...)
forma queedebug-defun
encuentra. Sin embargo, funciona si marca el defun primero y lo usanarrow-to-region
.narrow-to-defun
.lispy
'sN
selecciona región y llamanarrow-to-region
.edebug-defun
Gracias a @ abo-abo por el consejo para marcar el defun primero.
Aquí hay una forma rápida de habilitar / deshabilitar
edebug-defun
. Esto se usasearch-backward-regexp
para edebug-instrument o evaluar el nombre defun o defmacro correctamente, ya sea que esté definido en eluse-package
contenedor o no.Uso : con el punto en cualquier lugar de la función / cuerpo de macro, la llamada
modi/toggle-edebug-defun
habilitará o deshabilitaráedebug
esa entidad.debug-on-entry
Gracias a @glucas y @Drew, he preparado una forma conveniente de alternar
debug-on-entry
. Esto también utiliza el mismo enfoque que el anterior para analizar el nombre defun / defmacro.Uso : con el punto en cualquier parte del cuerpo de la función, la llamada
modi/toggle-debug-defun
habilitará o cancelará ladebug-on-error
función.fuente