Finden Sie den elisp Ursprung der Warnung

10

Ich habe einen Befehl ausgeführt und eine Warnung im Minibuffer erhalten.

Die genaue Warnung war comint-completion-at-point failed to return valid completion data, nachdem ich einen Befehl in automatisch vervollständigt hatte shell-mode.

Wie kann ich den Elisp-Ursprung der Warnung bestimmen?

Matthew Piziak
quelle
Lesen Sie das Handbuch zum Debuggen von Lisp-Programmen .
freakhill
1
C-h f comint-completion-at-pointKlicken Sie dann auf den Dateinamen, um den Quellcode anzuzeigen. Suchen Sie nach dieser Fehlermeldung. (Sie können auch nach der Fehlermeldung in den Lisp-Quellen suchen, um sie zu finden.)
Drew

Antworten:

16

Wie in der anderen Antwort erwähnt, ist das Handbuch für alle vorhandenen Debug-Tools hilfreich. Für Ihr spezifisches Problem würde ich Folgendes in Betracht ziehen:

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

Wie der Hilfetext besagt:

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

Daraus sollten Sie eine Rückverfolgung erhalten, wenn der Fehler auftritt. Sie können dann die betreffenden Funktionen mit Cu CMx instrumentieren und den Fehler beim nächsten Auftreten schrittweise durchgehen, um weitere Informationen zu erhalten.

stsquad
quelle
3
Dies ist eine ausgezeichnete Antwort. Vielen Dank. Ich denke, Sie haben ein zusätzliches Zitat in Ihrer ersten Zeile, in dem Sie setqund kombinieren 'debug-on-message. Ändern setq debug-on-messageoder set 'debug-on-messagereparieren für mich.
Matthew Piziak
@MatthewPiziak: danke - übereifriges Zitieren behoben.
stsquad
Dies ist so viel besser, als die komprimierten Emacs-Quellen zu überarbeiten! Der einzige Nachteil dabei ist, dass der problematische Zustand auftreten muss, bevor man ihn debuggen kann.