Найти elisp происхождение предупреждения


11

Я выполнил команду и получил предупреждение в минибуфере.

Точное предупреждение было comint-completion-at-point failed to return valid completion dataпосле автозаполнения команды в shell-mode.

Как я могу определить происхождение elisp предупреждения?


Посмотрите руководство по отладке программ на Лиспе .
freakhill

1
C-h f comint-completion-at-point, затем щелкните по имени файла, чтобы увидеть исходный код. Ищите это сообщение об ошибке. (Вы также можете найти ошибку msg в источниках Lisp, чтобы найти ее.)
Drew

Ответы:


17

Как указано в другом ответе, вы найдете прекрасное руководство, полезное для всех инструментов отладки, которые оно имеет. Для вашей конкретной проблемы я бы рассмотрел:

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

Как говорится в тексте справки:

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

От этого вы должны получить обратную трассировку, когда сбой ударит. Затем вы можете оснастить эти функции с помощью Cu CMx и в следующий раз выполнить процедуру сбоя, чтобы получить дополнительную информацию.


3
Это отличный ответ. Спасибо. Я думаю, у вас есть дополнительная цитата в первой строке, где вы объединяете setqи 'debug-on-message. Поменял его setq debug-on-messageили set 'debug-on-messageисправил для меня.
Мэтью Пизиак

@MatthewPiziak: спасибо - исправлено чрезмерное цитирование.
stsquad

Это намного лучше, чем zgrepping сжатых источников Emacs! Единственным недостатком этого является то, что проблемное условие должно возникнуть, прежде чем можно будет отладить его.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.