Encontrar a origem do aviso elisp

11

Executei um comando e recebi um aviso no minibuffer.

O aviso exato foi comint-completion-at-point failed to return valid completion data: depois que eu concluí automaticamente um comando shell-mode.

Como posso determinar a origem elisp do aviso?

Matthew Piziak
fonte
Dê uma olhada no manual em Debugging Lisp Programs .
Freakhill 11/11
11
C-h f comint-completion-at-pointe clique no nome do arquivo para ver o código-fonte. Procure essa mensagem de erro. (Você também pode grep para a msg de erro nas fontes Lisp, para encontrá-lo.)
de Drew

Respostas:

17

Conforme indicado na outra resposta, você encontrará o manual refinado útil para todas as ferramentas de depuração que possui. Para seu problema específico, eu consideraria:

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

Como o texto de ajuda indica:

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

A partir disso, você deve obter um retorno quando a falha ocorrer. Você pode instrumentar as funções em questão com o Cu CMx e percorrer a falha na próxima vez que ocorrer para obter mais informações.

stsquad
fonte
3
Esta é uma excelente resposta. Obrigado. Eu acho que você tem uma cotação extra em sua primeira linha, onde você combina setqe 'debug-on-message. Alterá-lo setq debug-on-messageou set 'debug-on-messagecorrigi-lo para mim.
Matthew Piziak
@MatthewPiziak: obrigado - cotação excessivamente zelosa corrigida.
Stsquad
Isso é muito melhor do que zgrepping as fontes compactadas do Emacs! A única desvantagem disso é que a condição problemática deve ocorrer antes que alguém possa depurá-la.