* emacs-lisp/crm.el (completing-read-multiple): Properly handle
authorChong Yidong <cyd@stupidchicken.com>
Wed, 10 May 2006 04:00:51 +0000 (04:00 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Wed, 10 May 2006 04:00:51 +0000 (04:00 +0000)
return value of read-from-minibuffer for empty input.

lisp/ChangeLog
lisp/emacs-lisp/crm.el

index 4b3f30e..2b8c53c 100644 (file)
@@ -1,3 +1,8 @@
+2006-05-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/crm.el (completing-read-multiple): Properly handle
+       return value of read-from-minibuffer for empty input.
+
 2006-05-09  Miles Bader  <miles@gnu.org>
 
        * comint.el (comint-insert-input): Remove redundant calls to setq
index 5a9787b..11d4d7f 100644 (file)
@@ -592,25 +592,28 @@ The return value of this function is a list of the read strings.
 See the documentation for `completing-read' for details on the arguments:
 PROMPT, TABLE, PREDICATE, REQUIRE-MATCH, INITIAL-INPUT, HIST, DEF, and
 INHERIT-INPUT-METHOD."
-  (let ((minibuffer-completion-table (function crm-collection-fn))
-       (minibuffer-completion-predicate predicate)
-       ;; see completing_read in src/minibuf.c
-       (minibuffer-completion-confirm
-        (unless (eq require-match t) require-match))
-       (crm-completion-table table)
-       crm-last-exact-completion
-       crm-current-element
-       crm-left-of-element
-       crm-right-of-element
-       crm-beginning-of-element
-       crm-end-of-element
-       (map (if require-match
-                crm-local-must-match-map
-              crm-local-completion-map)))
-    (split-string (read-from-minibuffer
-                  prompt initial-input map
-                  nil hist def inherit-input-method)
-                 crm-separator)))
+  (let* ((minibuffer-completion-table (function crm-collection-fn))
+        (minibuffer-completion-predicate predicate)
+        ;; see completing_read in src/minibuf.c
+        (minibuffer-completion-confirm
+         (unless (eq require-match t) require-match))
+        (crm-completion-table table)
+        crm-last-exact-completion
+        crm-current-element
+        crm-left-of-element
+        crm-right-of-element
+        crm-beginning-of-element
+        crm-end-of-element
+        (map (if require-match
+                 crm-local-must-match-map
+               crm-local-completion-map))
+        ;; If the user enters empty input, read-from-minibuffer returns
+        ;; the empty string, not DEF.
+        (input (read-from-minibuffer
+                prompt initial-input map
+                nil hist def inherit-input-method)))
+    (and def (string-equal input "") (setq input def))
+    (split-string input crm-separator)))
 
 ;; testing and debugging
 ;; (defun crm-init-test-environ ()