Temukan asal mula peringatan

11

Saya menjalankan perintah dan menerima peringatan di minibuffer.

Peringatan yang tepat adalah comint-completion-at-point failed to return valid completion data, setelah saya melengkapi perintah secara otomatis shell-mode.

Bagaimana saya bisa menentukan asal peringatan itu?

Matthew Piziak
sumber
Lihat manual tentang Program Lisug Debugging .
freakhill
1
C-h f comint-completion-at-point, lalu klik nama file untuk melihat kode sumber. Cari pesan kesalahan itu. (Anda juga dapat menerima pesan kesalahan di sumber Lisp, untuk menemukannya.)
Drew

Jawaban:

17

Seperti yang ditunjukkan dalam jawaban lain Anda akan menemukan manual yang bagus berguna untuk semua alat debug yang dimilikinya. Untuk Anda masalah khusus, saya akan mempertimbangkan:

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

Seperti yang dinyatakan teks bantuan:

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

Dari ini, Anda harus mendapatkan backtrace ketika kegagalan terjadi. Anda kemudian dapat menginstruksikan fungsi yang dimaksud dengan Cu CMx dan melangkah melalui kegagalan saat itu terjadi untuk informasi selengkapnya.

stsquad
sumber
3
Ini jawaban yang sangat bagus. Terima kasih. Saya pikir Anda memiliki penawaran tambahan di baris pertama Anda, tempat Anda menggabungkan setqdan 'debug-on-message. Mengubah setq debug-on-messageatau set 'debug-on-messagememperbaikinya untuk saya.
Matius Piziak
@MatthewPiziak: terima kasih - mengutip dengan terlalu bersemangat.
stsquad
Ini jauh lebih baik daripada zgrepping sumber terkompresi Emacs! Satunya downside dari ini adalah bahwa kondisi bermasalah harus terjadi sebelum seseorang dapat men-debug itu.