branch: master
commit 7c6d00d2893dcd41bd60e7f1786a56d4cf151d01
Author: Oleh Krehel <ohwoeo...@gmail.com>
Commit: Oleh Krehel <ohwoeo...@gmail.com>

    ivy.el (ivy-read): Return immediately for less than 2 candidates
---
 ivy.el |   40 ++++++++++++++++++++++------------------
 1 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/ivy.el b/ivy.el
index 8a6432d..462067e 100644
--- a/ivy.el
+++ b/ivy.el
@@ -124,24 +124,28 @@ COLLECTION is a list of strings.
 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially.
 UPDATE-FN is called each time the current candidate(s) is changed.
 If INDEX is non-nil select the corresponding candidate."
-  (setq ivy--index (or index 0))
-  (setq ivy--old-re nil)
-  (setq ivy--old-cands nil)
-  (setq ivy-text "")
-  (setq ivy--all-candidates collection)
-  (setq ivy--update-fn update-fn)
-  (setq ivy-exit nil)
-  (setq ivy--default (or (thing-at-point 'symbol) ""))
-  (unwind-protect
-       (minibuffer-with-setup-hook
-           #'ivy--minibuffer-setup
-         (read-from-minibuffer
-          prompt
-          initial-input
-          ivy-minibuffer-map
-          nil
-          'ivy-history))
-    (remove-hook 'post-command-hook #'ivy--exhibit)))
+  (cl-case (length collection)
+    (0 nil)
+    (1 (car collection))
+    (t
+     (setq ivy--index (or index 0))
+     (setq ivy--old-re nil)
+     (setq ivy--old-cands nil)
+     (setq ivy-text "")
+     (setq ivy--all-candidates collection)
+     (setq ivy--update-fn update-fn)
+     (setq ivy-exit nil)
+     (setq ivy--default (or (thing-at-point 'symbol) ""))
+     (unwind-protect
+          (minibuffer-with-setup-hook
+              #'ivy--minibuffer-setup
+            (read-from-minibuffer
+             prompt
+             initial-input
+             ivy-minibuffer-map
+             nil
+             'ivy-history))
+       (remove-hook 'post-command-hook #'ivy--exhibit)))))
 
 (defvar ivy-text ""
   "Stores the user's string as it is typed in.")

Reply via email to