Encuentra el origen de advertencia de elisp

11

Ejecuté un comando y recibí una advertencia en el minibúfer.

La advertencia exacta fue comint-completion-at-point failed to return valid completion data, después de completar automáticamente un comando shell-mode.

¿Cómo puedo determinar el origen de la advertencia de elisp?

Matthew Piziak
fuente
Eche un vistazo al manual sobre depuración de programas Lisp .
freakhill
1
C-h f comint-completion-at-point, luego haga clic en el nombre del archivo para ver el código fuente. Busque ese mensaje de error. (También puede buscar el mensaje de error en las fuentes de Lisp, para encontrarlo.)
Dibujó el

Respuestas:

17

Como se señaló en la otra respuesta, encontrará el excelente manual útil para todas las herramientas de depuración que tiene. Para su problema específico que consideraría:

(setq debug-on-message "comint-completion-at-point failed to return valid completion data")

Como dice el texto de ayuda:

If non-nil, debug if a message matching this regexp is displayed.

A partir de esto, debe obtener una traza inversa cuando llegue la falla. Luego puede instrumentar las funciones en cuestión con Cu CMx y pasar por el fallo la próxima vez que ocurra para obtener más información.

stsquad
fuente
3
Esta es una excelente respuesta. Gracias. Creo que tienes una cotización extra en tu primera línea, donde combinas setqy 'debug-on-message. Cambiarlo setq debug-on-messageo set 'debug-on-messagearreglarlo para mí.
Matthew Piziak
@MatthewPiziak: gracias, se ha corregido una cita demasiado entusiasta.
stsquad
¡Esto es mucho mejor que zgrepping las fuentes comprimidas de Emacs! El único inconveniente de esto es que la condición problemática debe ocurrir antes de que uno pueda depurarla.