]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new user option password-colon-equivalents
authorMichael Albinus <michael.albinus@gmx.de>
Mon, 13 Feb 2023 14:51:48 +0000 (15:51 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Mon, 13 Feb 2023 14:51:48 +0000 (15:51 +0100)
* lisp/international/mule-conf.el (password-colon-equivalents):
New defcustom.

* lisp/comint.el (comint-password-prompt-regexp):
* lisp/eshell/esh-mode.el (eshell-password-prompt-regexp): Use it.

* lisp/net/tramp-compat.el (tramp-compat-password-colon-equivalents):
New variable.

* lisp/net/tramp.el (tramp-password-prompt-regexp): Use it.

lisp/comint.el
lisp/eshell/esh-mode.el
lisp/international/mule-conf.el
lisp/net/tramp-compat.el
lisp/net/tramp.el

index c5589324a146c25b364591d1a047bfd5eaf8d873..9d2c245247fca247691ce8d356ba9948d075ee1f 100644 (file)
@@ -383,7 +383,8 @@ This variable is buffer-local."
    "\\(?:" (regexp-opt password-word-equivalents) "\\|Response\\)"
    "\\(?:\\(?:, try\\)? *again\\| (empty for no passphrase)\\| (again)\\)?"
    ;; "[[:alpha:]]" used to be "for", which fails to match non-English.
-   "\\(?: [[:alpha:]]+ .+\\)?[[:blank:]]*[::៖][[:space:]]*\\'"
+   "\\(?: [[:alpha:]]+ .+\\)?[[:blank:]]*"
+   "[" (apply #'string password-colon-equivalents) "][[:space:]]*\\'"
    ;; The ccrypt encryption dialog doesn't end with a colon, so
    ;; treat it specially.
    "\\|^Enter encryption key: (repeat) *\\'"
index 46c3c2fa175a443f561e5945414ebef270987762..1b8f5ff80184edf93a4f13aa4ebe50953a2b86b4 100644 (file)
@@ -172,7 +172,10 @@ inserted.  They return the string as it should be inserted."
   :type 'hook)
 
 (defcustom eshell-password-prompt-regexp
-  (format "\\(%s\\)[^::៖]*[::៖]\\s *\\'" (regexp-opt password-word-equivalents))
+  (format "%s[^%s]*[%s]\\s *\\'"
+          (regexp-opt password-word-equivalents t)
+          (apply #'string password-colon-equivalents)
+          (apply #'string password-colon-equivalents))
   "Regexp matching prompts for passwords in the inferior process.
 This is used by `eshell-watch-for-password-prompt'."
   :type 'regexp
index 979e685e32a8a317cf4f91540c7297b3c8fad7bc..30376b5bc194fbb4c5c57225f00b92a1d2263c69 100644 (file)
@@ -1734,6 +1734,19 @@ included; callers should bind `case-fold-search' to t."
   :version "27.1"
   :group 'processes)
 
+;; (describe-char-fold-equivalences ?:)
+;; The last entry is taken from history.
+(defcustom password-colon-equivalents
+  '(?\N{COLON}
+    ?\N{FULLWIDTH COLON}
+    ?\N{SMALL COLON}
+    ?\N{PRESENTATION FORM FOR VERTICAL COLON}
+    ?\N{KHMER SIGN CAMNUC PII KUUH})
+  "List of characters equivalent to trailing colon in \"password\" prompts."
+  :type '(repeat character)
+  :version "30.1"
+  :group 'processes)
+
 ;; The old code-pages library is obsoleted by coding systems based on
 ;; the charsets defined in this file but might be required by user
 ;; code.
index 01f1c38988c416a963ba5d13c5a2c68bcb9332d1..420d6cadb9cba4ddefefd4c380ffc513ad54e54a 100644 (file)
@@ -275,6 +275,19 @@ Add the extension of F, if existing."
       (autoload 'netrc-parse "netrc")
       (netrc-parse file))))
 
+;; User option `password-colon-equivalents' is new in Emacs 30.1.
+(if (boundp 'password-colon-equivalents)
+    (defvaralias
+      'tramp-compat-password-colon-equivalents
+      'password-colon-equivalents)
+  (defvar tramp-compat-password-colon-equivalents
+    '(?\N{COLON}
+      ?\N{FULLWIDTH COLON}
+      ?\N{SMALL COLON}
+      ?\N{PRESENTATION FORM FOR VERTICAL COLON}
+      ?\N{KHMER SIGN CAMNUC PII KUUH})
+    "List of characters equivalent to trailing colon in \"password\" prompts."))
+
 (dolist (elt (all-completions "tramp-compat-" obarray 'functionp))
   (put (intern elt) 'tramp-suppress-trace t))
 
index 115048d59dba9da213fac06283a965d2a67a8ae4..9fa9866aec8c7d32d1b9461f064a7e4519a0a47f 100644 (file)
@@ -641,10 +641,11 @@ This regexp must match both `tramp-initial-end-of-output' and
   :type 'regexp)
 
 (defcustom tramp-password-prompt-regexp
-  (rx
-   bol (* nonl)
-   (group (regexp (regexp-opt password-word-equivalents)))
-   (* nonl) (any "::៖") (? "\^@") (* blank))
+  (rx-to-string
+   `(: bol (* nonl)
+       (group (| . ,password-word-equivalents))
+       (* nonl) (any . ,tramp-compat-password-colon-equivalents)
+       (? "\^@") (* blank)))
   "Regexp matching password-like prompts.
 The regexp should match at end of buffer.