mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
*-watch-for-password-prompt: Use run-at-time to read password
* lisp/comint.el (comint-watch-for-password-prompt): * lisp/eshell/esh-mode.el (eshell-watch-for-password-prompt): * lisp/term.el (term-watch-for-password-prompt): Use run-at-time to read a password (bug#51263).
This commit is contained in:
parent
f3c5a1b368
commit
a6f156a7b0
3 changed files with 29 additions and 7 deletions
|
|
@ -2455,11 +2455,19 @@ This function could be in the list `comint-output-filter-functions'."
|
|||
(when (let ((case-fold-search t))
|
||||
(string-match comint-password-prompt-regexp
|
||||
(string-replace "\r" "" string)))
|
||||
(let ((comint--prompt-recursion-depth (1+ comint--prompt-recursion-depth)))
|
||||
(if (> comint--prompt-recursion-depth 10)
|
||||
(message "Password prompt recursion too deep")
|
||||
(comint-send-invisible
|
||||
(string-trim string "[ \n\r\t\v\f\b\a]+" "\n+"))))))
|
||||
;; Use `run-at-time' in order not to pause execution of the
|
||||
;; process filter with a minibuffer
|
||||
(run-at-time
|
||||
0 nil
|
||||
(lambda (current-buf)
|
||||
(with-current-buffer current-buf
|
||||
(let ((comint--prompt-recursion-depth
|
||||
(1+ comint--prompt-recursion-depth)))
|
||||
(if (> comint--prompt-recursion-depth 10)
|
||||
(message "Password prompt recursion too deep")
|
||||
(comint-send-invisible
|
||||
(string-trim string "[ \n\r\t\v\f\b\a]+" "\n+"))))))
|
||||
(current-buffer))))
|
||||
|
||||
;; Low-level process communication
|
||||
|
||||
|
|
|
|||
|
|
@ -940,7 +940,14 @@ This function could be in the list `eshell-output-filter-functions'."
|
|||
(beginning-of-line)
|
||||
(if (re-search-forward eshell-password-prompt-regexp
|
||||
eshell-last-output-end t)
|
||||
(eshell-send-invisible))))))
|
||||
;; Use `run-at-time' in order not to pause execution of
|
||||
;; the process filter with a minibuffer
|
||||
(run-at-time
|
||||
0 nil
|
||||
(lambda (current-buf)
|
||||
(with-current-buffer current-buf
|
||||
(eshell-send-invisible)))
|
||||
(current-buffer)))))))
|
||||
|
||||
(custom-add-option 'eshell-output-filter-functions
|
||||
'eshell-watch-for-password-prompt)
|
||||
|
|
|
|||
|
|
@ -2409,7 +2409,14 @@ Checks if STRING contains a password prompt as defined by
|
|||
(when (term-in-line-mode)
|
||||
(when (let ((case-fold-search t))
|
||||
(string-match comint-password-prompt-regexp string))
|
||||
(term-send-invisible (read-passwd string)))))
|
||||
;; Use `run-at-time' in order not to pause execution of the
|
||||
;; process filter with a minibuffer
|
||||
(run-at-time
|
||||
0 nil
|
||||
(lambda (current-buf)
|
||||
(with-current-buffer current-buf
|
||||
(term-send-invisible (read-passwd string))))
|
||||
(current-buffer)))))
|
||||
|
||||
|
||||
;;; Low-level process communication
|
||||
|
|
|
|||
Loading…
Reference in a new issue