bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#74626: 30.0.91; mini buffer password prompt mismatches shell buffer'


From: Jim Porter
Subject: bug#74626: 30.0.91; mini buffer password prompt mismatches shell buffer's
Date: Sun, 1 Dec 2024 11:54:05 -0800

On 12/1/2024 7:44 AM, Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors wrote:
- comint-password-prompt-regexp uses "'s" in order to search for a password
   prompt. That's fine for password prompts like "van@192.168.1.144's
   password:", however, everything before this "'s" is ignored when the
   minibuffer prompt is assembled.

[snip]

The problem does not happen with Emacs 29. The culprit seems to be
commit 1a55e957ae57, which has changed the implementation of
comint-watch-for-password-prompt. The appended patch fixes this for me
in Emacs 30. Could you, please, check?

Jim, do you have a comment?

My goal with the previous change (aside from the 'comint-password-prompt-max-length' stuff) was just to make sure that we don't show extraneous lines in the minibuffer that aren't part of the prompt. For example, consider a script like this:

  #!/bin/sh
  cat some-large-file.txt
  echo "Enter password: "
  read PASSWORD
  # ...

The minibuffer would show (some of) the output of "some-large-file.txt".

My hope was to use the matched result from 'comint-password-prompt-regexp' to do this, though apparently sometimes that regexp doesn't match the *whole* password prompt (e.g. in the "'s" case you identified). For Emacs 30, maybe the simplest fix is something like so? That should restore the old behavior, warts and all:

----------------------------------------

diff --git a/lisp/comint.el b/lisp/comint.el
index 4268fa8dad2..a6b078b685b 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2574,8 +2574,7 @@ comint-watch-for-password-prompt
     (when (let ((case-fold-search t))
             (string-match comint-password-prompt-regexp
                           (string-replace "\r" "" string)))
-      (setq prompt (string-trim (match-string 0 string)
-                                "[ \n\r\t\v\f\b\a]+" "\n+"))
+      (setq prompt (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

----------------------------------------

For the master branch, I think your patch makes sense, assuming we're confident that 'comint-password-prompt-regexp' now matches the entire prompt in all (most?) cases.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]