Esto se hace a través de un filtro de proceso.
Por defecto comint-output-filter-functions
incluye comint-watch-for-password-prompt
, que es la función de filtro que maneja esto.
Si ve que el texto coincide comint-password-prompt-regexp
, llama send-invisible
para solicitar al usuario una contraseña.
Para obtener más información sobre cómo funcionan los filtros de proceso, consulte C-hig (elisp)Filter Functions
Editar: Como seguimiento, tenga en cuenta también que puede M-x toggle-debug-on-quit
y luego, en el indicador de sudo, escriba C-gpara obtener un seguimiento que muestre lo que está sucediendo. p.ej:
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>: ")
El resultado es mínimo debido al código compilado de bytes que se está evaluando, por lo que comint-output-filter-functions
se pierde el detalle , pero aún puede ver de inmediato la situación general. También puede M-x load-library
RET comint.el
RETcargar el código no compilado y luego repetir todo el proceso para obtener un rastreo más detallado.