emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master b3cd0d5 016/272: ivy.el (ivy-mode): Set completing-read-fu


From: Oleh Krehel
Subject: [elpa] master b3cd0d5 016/272: ivy.el (ivy-mode): Set completing-read-function
Date: Mon, 25 Apr 2016 10:13:14 +0000

branch: master
commit b3cd0d5ccbb98eb06c5b6638d9e08e59b2189b99
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    ivy.el (ivy-mode): Set completing-read-function
    
    * ivy.el (ivy-completion-beg): Rename from `counsel-completion-beg'.
    (ivy-completion-end): Rename from `counsel-completion-end'.
    (ivy-completion-in-region-action): Rename from `counsel--el-action'.
    (ivy-completion-in-region): New defun.
    (ivy-mode): Set `completing-read-function' to 'ivy-completion-in-region.
    
    * counsel.el: Update due to renames.
    
    Fixes #331
---
 counsel.el |   84 +++++++++++++++++++++++-------------------------------------
 ivy.el     |   43 +++++++++++++++++++++++++++++--
 2 files changed, 73 insertions(+), 54 deletions(-)

diff --git a/counsel.el b/counsel.el
index 69b43a7..227ad7f 100644
--- a/counsel.el
+++ b/counsel.el
@@ -35,12 +35,6 @@
 (require 'swiper)
 (require 'etags)
 
-(defvar counsel-completion-beg nil
-  "Completion bounds start.")
-
-(defvar counsel-completion-end nil
-  "Completion bounds end.")
-
 ;;;###autoload
 (defun counsel-el ()
   "Elisp completion at point."
@@ -59,12 +53,12 @@
          symbol-names)
     (if bnd
         (progn
-          (setq counsel-completion-beg
+          (setq ivy-completion-beg
                 (move-marker (make-marker) (car bnd)))
-          (setq counsel-completion-end
+          (setq ivy-completion-end
                 (move-marker (make-marker) (cdr bnd))))
-      (setq counsel-completion-beg nil)
-      (setq counsel-completion-end nil))
+      (setq ivy-completion-beg nil)
+      (setq ivy-completion-end nil))
     (if (string= str "")
         (mapatoms
          (lambda (x)
@@ -80,7 +74,7 @@
     (ivy-read "Symbol name: " symbol-names
               :predicate (and funp #'functionp)
               :initial-input str
-              :action #'counsel--el-action)))
+              :action #'ivy-completion-in-region-action)))
 
 (declare-function slime-symbol-start-pos "ext:slime")
 (declare-function slime-symbol-end-pos "ext:slime")
@@ -90,27 +84,13 @@
 (defun counsel-cl ()
   "Common Lisp completion at point."
   (interactive)
-  (setq counsel-completion-beg (slime-symbol-start-pos))
-  (setq counsel-completion-end (slime-symbol-end-pos))
+  (setq ivy-completion-beg (slime-symbol-start-pos))
+  (setq ivy-completion-end (slime-symbol-end-pos))
   (ivy-read "Symbol name: "
             (car (slime-contextual-completions
-                  counsel-completion-beg
-                  counsel-completion-end))
-            :action #'counsel--el-action))
-
-(defun counsel--el-action (symbol)
-  "Insert SYMBOL, erasing the previous one."
-  (when (stringp symbol)
-    (with-ivy-window
-      (when counsel-completion-beg
-        (delete-region
-         counsel-completion-beg
-         counsel-completion-end))
-      (setq counsel-completion-beg
-            (move-marker (make-marker) (point)))
-      (insert symbol)
-      (setq counsel-completion-end
-            (move-marker (make-marker) (point))))))
+                  ivy-completion-beg
+                  ivy-completion-end))
+            :action #'ivy-completion-in-region-action))
 
 (declare-function deferred:sync! "ext:deferred")
 (declare-function jedi:complete-request "ext:jedi-core")
@@ -122,10 +102,10 @@
   (let ((bnd (bounds-of-thing-at-point 'symbol)))
     (if bnd
         (progn
-          (setq counsel-completion-beg (car bnd))
-          (setq counsel-completion-end (cdr bnd)))
-      (setq counsel-completion-beg nil)
-      (setq counsel-completion-end nil)))
+          (setq ivy-completion-beg (car bnd))
+          (setq ivy-completion-end (cdr bnd)))
+      (setq ivy-completion-beg nil)
+      (setq ivy-completion-end nil)))
   (deferred:sync!
    (jedi:complete-request))
   (ivy-read "Symbol name: " (jedi:ac-direct-matches)
@@ -135,18 +115,18 @@
   "Insert SYMBOL, erasing the previous one."
   (when (stringp symbol)
     (with-ivy-window
-      (when counsel-completion-beg
+      (when ivy-completion-beg
         (delete-region
-         counsel-completion-beg
-         counsel-completion-end))
-      (setq counsel-completion-beg
+         ivy-completion-beg
+         ivy-completion-end))
+      (setq ivy-completion-beg
             (move-marker (make-marker) (point)))
       (insert symbol)
-      (setq counsel-completion-end
+      (setq ivy-completion-end
             (move-marker (make-marker) (point)))
       (when (equal (get-text-property 0 'symbol symbol) "f")
         (insert "()")
-        (setq counsel-completion-end
+        (setq ivy-completion-end
               (move-marker (make-marker) (point)))
         (backward-char 1)))))
 
@@ -304,8 +284,8 @@
   "Insert a Unicode character at point."
   (interactive)
   (let ((minibuffer-allow-text-properties t))
-    (setq counsel-completion-beg (point))
-    (setq counsel-completion-end (point))
+    (setq ivy-completion-beg (point))
+    (setq ivy-completion-end (point))
     (ivy-read "Unicode name: "
               (mapcar (lambda (x)
                         (propertize
@@ -314,10 +294,10 @@
                       (ucs-names))
               :action (lambda (char)
                         (with-ivy-window
-                          (delete-region counsel-completion-beg 
counsel-completion-end)
-                          (setq counsel-completion-beg (point))
+                          (delete-region ivy-completion-beg ivy-completion-end)
+                          (setq ivy-completion-beg (point))
                           (insert-char (get-text-property 0 'result char))
-                          (setq counsel-completion-end (point))))
+                          (setq ivy-completion-end (point))))
               :history 'counsel-unicode-char-history)))
 
 (declare-function cider-sync-request:complete "ext:cider-client")
@@ -1273,13 +1253,13 @@ INITIAL-INPUT can be given as the initial minibuffer 
input."
   (interactive)
   (if (eq last-command 'yank)
       (progn
-        (setq counsel-completion-end (point))
-        (setq counsel-completion-beg
+        (setq ivy-completion-end (point))
+        (setq ivy-completion-beg
               (save-excursion
                 (search-backward (car kill-ring))
                 (point))))
-    (setq counsel-completion-beg (point))
-    (setq counsel-completion-end (point)))
+    (setq ivy-completion-beg (point))
+    (setq ivy-completion-end (point)))
   (let ((candidates (cl-remove-if
                      (lambda (s)
                        (or (< (length s) 3)
@@ -1306,10 +1286,10 @@ INITIAL-INPUT can be given as the initial minibuffer 
input."
 (defun counsel-yank-pop-action (s)
   "Insert S into the buffer, overwriting the previous yank."
   (with-ivy-window
-    (delete-region counsel-completion-beg
-                   counsel-completion-end)
+    (delete-region ivy-completion-beg
+                   ivy-completion-end)
     (insert (substring-no-properties s))
-    (setq counsel-completion-end (point))))
+    (setq ivy-completion-end (point))))
 
 (defvar imenu-auto-rescan)
 (declare-function imenu--subalist-p "imenu")
diff --git a/ivy.el b/ivy.el
index 704a71c..feff8d9 100644
--- a/ivy.el
+++ b/ivy.el
@@ -1356,6 +1356,42 @@ INHERIT-INPUT-METHOD is currently ignored."
                     (cdr sort)
                   t)))))
 
+(defvar ivy-completion-beg nil
+  "Completion bounds start.")
+
+(defvar ivy-completion-end nil
+  "Completion bounds end.")
+
+(defun ivy-completion-in-region-action (str)
+  "Insert STR, erasing the previous one.
+The previous string is between `ivy-completion-beg' and `ivy-completion-end'."
+  (when (stringp str)
+    (with-ivy-window
+      (when ivy-completion-beg
+        (delete-region
+         ivy-completion-beg
+         ivy-completion-end))
+      (setq ivy-completion-beg
+            (move-marker (make-marker) (point)))
+      (insert str)
+      (setq ivy-completion-end
+            (move-marker (make-marker) (point))))))
+
+(defun ivy-completion-in-region (start end collection &optional predicate)
+  "An Ivy function suitable for `completion-in-region-function'."
+  (let* ((str (buffer-substring-no-properties start end))
+         (comps (all-completions str collection predicate)))
+    (if (null comps)
+        (message "No matches")
+      (setq ivy-completion-beg start)
+      (setq ivy-completion-end end)
+      (and
+       (ivy-read (format "(%s): " str) comps
+                 :predicate predicate
+                 :action #'ivy-completion-in-region-action
+                 :require-match t)
+       t))))
+
 ;;;###autoload
 (define-minor-mode ivy-mode
   "Toggle Ivy mode on or off.
@@ -1373,8 +1409,11 @@ Minibuffer bindings:
   :keymap ivy-mode-map
   :lighter " ivy"
   (if ivy-mode
-      (setq completing-read-function 'ivy-completing-read)
-    (setq completing-read-function 'completing-read-default)))
+      (progn
+        (setq completing-read-function 'ivy-completing-read)
+        (setq completion-in-region-function 'ivy-completion-in-region))
+    (setq completing-read-function 'completing-read-default)
+    (setq completion-in-region-function 'completion--in-region)))
 
 (defun ivy--preselect-index (preselect candidates)
   "Return the index of PRESELECT in CANDIDATES."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]