Locate password icon in global-mode-string
* doc/emacs/mini.texi (Passwords): Precise the location of the password icon. * doc/lispref/minibuf.texi (Reading a Password): The password icon is added to global-mode-string. * lisp/auth-source.el (read-passwd--mode-line-buffer): Remove. (read-passwd--hide-password): Fix docstring. (read-passwd-toggle-visibility): Don't use `read-passwd--mode-line-buffer'. Check for `read-passwd-mode'. Force update in all mode lines. (read-passwd-mode): Set `read-passwd--mode-line-icon' in `global-mode-string'. (Bug#73768)
This commit is contained in:
parent
19049efd30
commit
7dbbd58d6c
3 changed files with 19 additions and 29 deletions
|
@ -975,8 +975,8 @@ password. You may type either @key{RET} or @key{ESC} to submit the
|
|||
password. Any other self-inserting character key inserts the associated
|
||||
character into the password, and all other input is ignored.
|
||||
|
||||
There is also an icon at the front of the mode line indicating the
|
||||
password visibility. Clicking @kbd{mouse-1} on it toggles the password
|
||||
There is also an icon in the mode line indicating the password
|
||||
visibility. Clicking @kbd{mouse-1} on it toggles the password
|
||||
visibility as well.
|
||||
|
||||
@node Yes or No Prompts
|
||||
|
|
|
@ -2562,9 +2562,9 @@ This function uses @code{read-passwd-mode}, a minor mode. It binds two
|
|||
keys in the minbuffer: @kbd{C-u} (@code{delete-minibuffer-contents})
|
||||
deletes the password, and @kbd{TAB}
|
||||
(@code{read-passwd--toggle-visibility}) toggles the visibility of the
|
||||
password. There is also an additional icon in the mode-line. Clicking
|
||||
on this icon with @key{mouse-1} toggles the visibility of the password
|
||||
as well.
|
||||
password. There is also an additional icon in the mode-line's
|
||||
@code{global-mode-string}. Clicking on this icon with @key{mouse-1}
|
||||
toggles the visibility of the password as well.
|
||||
@end defun
|
||||
|
||||
@node Minibuffer Commands
|
||||
|
|
|
@ -2467,14 +2467,11 @@ point is moved into the passwords (see `authinfo-hide-elements').
|
|||
:version "30.1"
|
||||
:help-echo "mouse-1: Toggle password visibility")
|
||||
|
||||
(defvar read-passwd--mode-line-buffer nil
|
||||
"Buffer to modify `mode-line-format' for showing/hiding passwords.")
|
||||
|
||||
(defvar read-passwd--mode-line-icon nil
|
||||
"Propertized mode line icon for showing/hiding passwords.")
|
||||
|
||||
(defvar read-passwd--hide-password t
|
||||
"Toggle whether password should be hidden in minubuffer.")
|
||||
"Toggle whether password should be hidden in minibuffer.")
|
||||
|
||||
(defun read-passwd--hide-password ()
|
||||
"Make password in minibuffer hidden or visible."
|
||||
|
@ -2497,8 +2494,8 @@ Adapt also mode line."
|
|||
;; FIXME: In case of a recursive minibuffer, this may select the wrong
|
||||
;; mini-buffer.
|
||||
(with-current-buffer (window-buffer win)
|
||||
(setq read-passwd--hide-password (not read-passwd--hide-password))
|
||||
(with-current-buffer read-passwd--mode-line-buffer
|
||||
(when (memq 'read-passwd-mode local-minor-modes)
|
||||
(setq read-passwd--hide-password (not read-passwd--hide-password))
|
||||
(setq read-passwd--mode-line-icon
|
||||
`(:propertize
|
||||
,(if icon-preference
|
||||
|
@ -2514,8 +2511,8 @@ Adapt also mode line."
|
|||
(define-key map [mode-line mouse-1]
|
||||
#'read-passwd-toggle-visibility)
|
||||
map))))
|
||||
(force-mode-line-update))
|
||||
(read-passwd--hide-password))))
|
||||
(force-mode-line-update 'all)
|
||||
(read-passwd--hide-password)))))
|
||||
|
||||
(defvar read-passwd-map
|
||||
;; BEWARE: `defconst' would purecopy it, breaking the sharing with
|
||||
|
@ -2534,25 +2531,18 @@ Adapt also mode line."
|
|||
:keymap read-passwd-map
|
||||
:version "30.1"
|
||||
|
||||
(setq read-passwd--hide-password nil
|
||||
;; Stolen from `eldoc-minibuffer-message'.
|
||||
read-passwd--mode-line-buffer
|
||||
(window-buffer
|
||||
(or (window-in-direction 'above (minibuffer-window))
|
||||
(minibuffer-selected-window)
|
||||
(get-largest-window))))
|
||||
(setq read-passwd--hide-password nil)
|
||||
(or global-mode-string (setq global-mode-string '("")))
|
||||
|
||||
(if read-passwd-mode
|
||||
(with-current-buffer read-passwd--mode-line-buffer
|
||||
(let ((mode-string '(:eval read-passwd--mode-line-icon)))
|
||||
(if read-passwd-mode
|
||||
;; Add `read-passwd--mode-line-icon'.
|
||||
(when (listp mode-line-format)
|
||||
(setq mode-line-format
|
||||
(cons '(:eval read-passwd--mode-line-icon)
|
||||
mode-line-format))))
|
||||
(with-current-buffer read-passwd--mode-line-buffer
|
||||
(or (member mode-string global-mode-string)
|
||||
(setq global-mode-string
|
||||
(append global-mode-string (list mode-string))))
|
||||
;; Remove `read-passwd--mode-line-icon'.
|
||||
(when (listp mode-line-format)
|
||||
(setq mode-line-format (cdr mode-line-format)))))
|
||||
(setq global-mode-string
|
||||
(delete mode-string global-mode-string))))
|
||||
|
||||
(when read-passwd-mode
|
||||
(read-passwd-toggle-visibility)))
|
||||
|
|
Loading…
Add table
Reference in a new issue