Aqui está um exemplo de trabalho mínimo para demonstrar o problema, você precisará ter o use-package
pacote instalado:
(use-package ido
:config
(progn
(defun dummy/function ()
(interactive)
(message "I am in the dummy function."))))
Quando tento adicionar a instrumentação edebug ao dummy/function
uso M-x edebug-defun
, ele inicia o edebug corretamente como se eu já tivesse feito M-x dummy/function
. Eu tenho que parar com isso q
. Mas quando eu realmente faço M-x dummy/function
, não vejo o edebug sendo ativado.
Existe algo sobre o use-package
wrapper que mexe com a instrumentação edebug? Como pode ser consertado?
use-package
edebug
Kaushal Modi
fonte
fonte
dummy/function
no nível superior (ou seja, fora do pacote de uso) corrige o problema imediato? Parei de usar funções lambda anônimas em favor de funções nomeadas para lidar com tipos semelhantes de problemas nos ganchos de modo.use-package
wrapper podem ser editadas com perfeição. Gostaria de invólucro de tudo relacionado ao pacote X interior(use-package X ..)
, incluindo as minhas funções personalizadas relacionadas com X. Mas se edebug dessas funções é um problema, então eu precisaria repensar minha organização código ..M-x report-emacs-bug
. Esteja preparado para fornecer uma receita simples que comeceemacs -Q
.edebug-defun
depura o formulário de nível superior, que neste caso é o(use-package ...)
próprio, e não o desafiador que você está passando para ause-package
macro. Você pode usaredebug-on-entry
e dar o nome da função que você definiu?debug
, nãoedebug
. Por exemploM-x debug-on-entry
,. HTH.Respostas:
Quando você o chama
edebug-defun
, depura o formulário de nível superior, que neste caso é(use-package ...)
.Você pode usar
debug-on-entry
para depurar uma função nomeada.fonte
narrow-to-region
)edebug-defun
)widen
)Se você gosta de fazer as coisas rapidamente, atalho lispy para isso é N xe W.
fonte
narrow-to-defun
restringe à mesma(use-package ...)
formaedebug-defun
encontrada. No entanto, ele funciona se você marcar o desfunho primeiro e usá-lonarrow-to-region
.narrow-to-defun
.lispy
'sN
seleciona região e chamadasnarrow-to-region
.edebug-defun
Agradecemos a @ abo-abo pela dica para marcar o primeiro desunião.
Aqui está uma maneira rápida de ativar / desativar
edebug-defun
. Isso usasearch-backward-regexp
para edebug-instrumentar ou avaliar o nome defun ou defmacro corretamente, esteja ele definido nouse-package
wrapper ou não.Uso - Com o ponto em qualquer lugar no corpo da função / macro, a chamada
modi/toggle-edebug-defun
será ativada ou desativadaedebug
para essa entidade.debug-on-entry
Graças a @glucas e @Drew, criei uma maneira conveniente de alternar
debug-on-entry
. Isso também usa a mesma abordagem acima para analisar o nome defun / defmacro.Uso - Com o ponto em qualquer lugar no corpo da função, a chamada
modi/toggle-debug-defun
ativará ou cancelará odebug-on-error
para essa função.fonte