Trova l'origine elisp di avviso


11

Ho eseguito un comando e ho ricevuto un avviso nel minibuffer.

L'avvertimento esatto è stato comint-completion-at-point failed to return valid completion data, dopo che ho completato automaticamente un comando shell-mode.

Come posso determinare l'origine elisp dell'avviso?


Dai un'occhiata al manuale sul debug dei programmi Lisp .
freakhill,

1
C-h f comint-completion-at-point, quindi fai clic sul nome del file per vedere il codice sorgente. Cerca quel messaggio di errore. (Puoi anche chiedere l'errore msg nei sorgenti Lisp, per trovarlo.)
Disegnato l'

Risposte:


17

Come sottolineato nell'altra risposta, troverai il manuale fine utile per tutti gli strumenti di debug che ha. Per il tuo problema specifico prenderei in considerazione:

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

Come afferma il testo di aiuto:

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

Da questo dovresti ottenere una backtrace quando si verifica l'errore. È quindi possibile strumentare le funzioni in questione con Cu CMx ed esaminare l'errore la prossima volta che si verifica per ulteriori informazioni.


3
Questa è una risposta eccellente Grazie. Penso che tu abbia un preventivo extra nella tua prima riga, dove combini setqe 'debug-on-message. Modificandolo setq debug-on-messageo set 'debug-on-messagerisolto per me.
Matthew Piziak,

@MatthewPiziak: grazie - citazione troppo zelante risolta.
stsquad,

È molto meglio che zgrepping delle fonti compresse di Emacs! L'unico aspetto negativo di questo è che la condizione problematica deve verificarsi prima di poter eseguire il debug.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.