Ini dilakukan melalui filter proses.
Secara default comint-output-filter-functions
termasuk comint-watch-for-password-prompt
, yang merupakan fungsi filter yang menangani ini.
Jika ia melihat teks yang cocok comint-password-prompt-regexp
maka ia send-invisible
meminta pengguna untuk meminta kata sandi.
Untuk informasi lebih lanjut tentang cara kerja filter proses, lihat C-hig (elisp)Filter Functions
Sunting: Sebagai tindak lanjut, perhatikan juga bahwa Anda dapat M-x toggle-debug-on-quit
dan kemudian pada jenis sudo prompt C-guntuk mendapatkan backtrace yang akan menunjukkan apa yang terjadi. misalnya:
Debugger entered--Lisp error: (quit)
read-string("[sudo] password for <username>: " nil t nil)
read-passwd("[sudo] password for <username>: ")
send-invisible("[sudo] password for <username>: ")
comint-watch-for-password-prompt("[sudo] password for <username>: ")
run-hook-with-args(comint-watch-for-password-prompt "[sudo] password for <username>: ")
comint-output-filter(#<process shell> "[sudo] password for <username>: ")
Outputnya minimal karena kode byte-dikompilasi sedang dievaluasi, jadi detailnya comint-output-filter-functions
hilang, tetapi Anda masih dapat segera melihat situasi umum. Anda juga bisa M-x load-library
RET comint.el
RETmemuat kode yang tidak dikompilasi dan kemudian mengulangi seluruh proses untuk mendapatkan backtrace yang lebih rinci.