]> code.delx.au - gnu-emacs/commitdiff
(read-number): New function.
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 26 Mar 2004 14:49:12 +0000 (14:49 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 26 Mar 2004 14:49:12 +0000 (14:49 +0000)
lisp/subr.el

index 0b3c3df4e8d49a98202b1f5e9e707641b699d567..2c39a8447cf4090ee1b4b601d53122a4e135fb10 100644 (file)
@@ -1,6 +1,6 @@
 ;;; subr.el --- basic lisp subroutines for Emacs
 
-;; Copyright (C) 1985, 86, 92, 94, 95, 99, 2000, 2001, 2002, 2003
+;; Copyright (C) 1985, 86, 92, 94, 95, 99, 2000, 2001, 2002, 03, 2004
 ;;   Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
@@ -1307,6 +1307,27 @@ Optional DEFAULT is a default password to use instead of empty input."
                  (setq pass new-pass))))))
       (message nil)
       (or pass default ""))))
+
+;; This should be used by `call-interactively' for `n' specs.
+(defun read-number (prompt &optional default)
+  (let ((n nil))
+    (when default
+      (setq prompt
+           (if (string-match "\\(\\):[^:]*" prompt)
+               (replace-match (format " [%s]" default) t t prompt 1)
+             (concat prompt (format " [%s] " default)))))
+    (while
+       (progn
+         (let ((str (read-from-minibuffer prompt nil nil nil nil
+                                          (number-to-string default))))
+           (setq n (cond
+                    ((zerop (length str)) default)
+                    ((stringp str) (read str)))))
+         (unless (numberp n)
+           (message "Please enter a number.")
+           (sit-for 1)
+           t)))
+    n))
 \f
 ;;; Atomic change groups.