Si se señala un error en el código Emacs Lisp, y debug-on-errores así t, obtengo un búfer de seguimiento que hace que sea fácil averiguar dónde ocurrió el error. Sin embargo, para los errores que ocurren mientras se procesa una respuesta de la red de forma asincrónica, sería molesto que aparezca el búfer de rastreo, así que prefiero detectar el error condition-casey registrarlo.
Entonces, cuando estoy manejando un error condition-case, ¿hay alguna forma de obtener acceso a la traza inversa en el punto del error? Llamar a la backtracefunción obtiene la traza inversa del código dentro del controlador, que no es lo que estoy buscando.
(condition-case e
(do-something-that-might-fail)
(error
(message "%s"
;; This gets the wrong backtrace!
(with-temp-buffer
(let ((standard-output (current-buffer)))
(backtrace)
(buffer-string))))))
do-something-that-might-failgenerar un seguimiento de pila y adjuntarlo al error que genera.
magithub-errorCreo que mi función hace algo similar a esto, pero no estoy en una computadora en este momento. Puede ayudar de todos modos.