* lisp/subr.el (read-passwd-map): New var.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 6 Oct 2012 17:29:15 +0000 (13:29 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 6 Oct 2012 17:29:15 +0000 (13:29 -0400)
(read-passwd): Use `read-string' again.
* lisp/minibuffer.el (delete-minibuffer-contents): Make it interactive.

lisp/ChangeLog
lisp/minibuffer.el
lisp/subr.el

index 6235f9f..292a536 100644 (file)
@@ -1,3 +1,9 @@
+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):
index cf99001..a9be174 100644 (file)
@@ -632,6 +632,7 @@ That is what completion commands operate on."
 (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)))
index e8eef54..e438a86 100644 (file)
@@ -2143,6 +2143,13 @@ any other non-digit terminates the character code and is then used as input."))
       (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.
@@ -2180,19 +2187,11 @@ by doing (clear-string STRING)."
             (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