Odbywa się to za pomocą filtra procesu.
Domyślnie comint-output-filter-functions
zawiera comint-watch-for-password-prompt
, która obsługuje funkcję filtrującą.
Jeśli widzi dopasowanie tekstu comint-password-prompt-regexp
, wywołuje send-invisible
monit o podanie hasła.
Aby uzyskać więcej informacji na temat działania filtrów procesów, patrz C-hig (elisp)Filter Functions
Edycja: W ramach działań następczych pamiętaj, że możesz, M-x toggle-debug-on-quit
a następnie w wierszu polecenia sudo wpisać C-gślad, który pokaże, co się dzieje. na przykład:
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>: ")
Dane wyjściowe są minimalne ze względu na analizowany kod skompilowany bajtowo, więc szczegóły comint-output-filter-functions
są tracone, ale nadal można natychmiast zobaczyć ogólną sytuację. Możesz także M-x load-library
RET comint.el
RETzaładować nieskompilowany kod, a następnie powtórzyć cały proces, aby uzyskać bardziej szczegółowy ślad.