+2012-10-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * subr.el (read-passwd-map): New var.
+ (read-passwd): Use `read-string' again.
+ * minibuffer.el (delete-minibuffer-contents): Make it interactive.
+
2012-10-06 Jambunathan K <kjambunathan@gmail.com>
* register.el (append-to-register, prepend-to-register):
(defun delete-minibuffer-contents ()
"Delete all user input in a minibuffer.
If the current buffer is not a minibuffer, erase its entire contents."
+ (interactive)
;; We used to do `delete-field' here, but when file name shadowing
;; is on, the field doesn't cover the entire minibuffer contents.
(delete-region (minibuffer-prompt-end) (point-max)))
(setq first nil))
code))
+(defconst read-passwd-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map minibuffer-local-map)
+ (define-key map "\C-u" #'delete-minibuffer-contents) ;bug#12570
+ map)
+ "Keymap used while reading passwords.")
+
(defun read-passwd (prompt &optional confirm default)
"Read a password, prompting with PROMPT, and return it.
If optional CONFIRM is non-nil, read the password twice to make sure.
(setq minibuf (current-buffer))
;; Turn off electricity.
(set (make-local-variable 'post-self-insert-hook) nil)
+ (use-local-map read-passwd-map)
(add-hook 'after-change-functions hide-chars-fun nil 'local))
(unwind-protect
- (let ((enable-recursive-minibuffers t)
- (map (make-sparse-keymap))
- result)
- (set-keymap-parent map minibuffer-local-map)
- (define-key map "\C-u" ; bug#12570
- (lambda () (interactive) (delete-minibuffer-contents)))
- (setq result
- ;; t = no history.
- (read-from-minibuffer prompt nil map nil t default))
- (if (and (equal "" result) default) default
- result))
+ (let ((enable-recursive-minibuffers t))
+ (read-string prompt nil t default)) ; t = "no history"
(when (buffer-live-p minibuf)
(with-current-buffer minibuf
;; Not sure why but it seems that there might be cases where the