branch: master
commit 6a098c66a915a26d59bb87e34678094c5ceac18c
Author: Oleh Krehel <[email protected]>
Commit: Oleh Krehel <[email protected]>
Add ivy-mode
* ivy.el (ivy-completing-read): New defun.
(ivy-mode): New global minor mode.
---
ivy.el | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/ivy.el b/ivy.el
index b1fd85c..3ac5931 100644
--- a/ivy.el
+++ b/ivy.el
@@ -231,6 +231,44 @@ UPDATE-FN is called each time the current candidate(s) is
changed."
(when ivy--action
(funcall ivy--action))))))
+(defun ivy-completing-read (prompt collection
+ &optional predicate _require-match initial-input
+ &rest _ignore)
+ "Read a string in the minibuffer, with completion.
+
+This is an interface that conforms to `completing-read', so that
+it can be used for `completing-read-function'.
+
+PROMPT is a string to prompt with; normally it ends in a colon and a space.
+COLLECTION can be a list of strings, an alist, an obarray or a hash table.
+PREDICATE limits completion to a subset of COLLECTION.
+
+_REQUIRE-MATCH is ignored for now.
+INITIAL-INPUT is a string that can be inserted into the minibuffer initially.
+
+The history, defaults and input-method arguments are ignored for now."
+ (cond ((functionp collection)
+ (error "Function as a collection unsupported"))
+ ((hash-table-p collection)
+ (error "Hash table as a collection unsupported"))
+ ((listp (car collection))
+ (setq collection (mapcar #'car collection))))
+ (when predicate
+ (setq collection (cl-remove-if-not predicate collection)))
+ (ivy-read prompt collection initial-input))
+
+;;;###autoload
+(define-minor-mode ivy-mode
+ "Toggle Ivy mode on or off.
+With ARG, turn Ivy mode on if arg is positive, off otherwise.
+Turning on Ivy mode will set `completing-read-function' to
+`ivy-completing-read'."
+ :group 'ivy
+ :global t
+ (if ivy-mode
+ (setq completing-read-function 'ivy-completing-read)
+ (setq completing-read-function 'completing-read-default)))
+
(defvar ivy--action nil
"Store a function to call at the end of `ivy--read'.")