Найти 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 и в следующий раз выполнить процедуру сбоя, чтобы получить дополнительную информацию.

stsquad
источник
3
Это отличный ответ. Спасибо. Я думаю, у вас есть дополнительная цитата в первой строке, где вы объединяете setqи 'debug-on-message. Поменял его setq debug-on-messageили set 'debug-on-messageисправил для меня.
Мэтью Пизиак
@MatthewPiziak: спасибо - исправлено чрезмерное цитирование.
stsquad
Это намного лучше, чем zgrepping сжатых источников Emacs! Единственным недостатком этого является то, что проблемное условие должно возникнуть, прежде чем можно будет отладить его.