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

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

[elpa] externals/ivy-posframe 61cb32e 192/195: Fix swiper-avy and ivy-po


From: Feng Shu
Subject: [elpa] externals/ivy-posframe 61cb32e 192/195: Fix swiper-avy and ivy-posframe are having trouble #80
Date: Sat, 3 Oct 2020 07:12:11 -0400 (EDT)

branch: externals/ivy-posframe
commit 61cb32e0aa23e1a9451f1d76dc5d29d867830de5
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>

    Fix swiper-avy and ivy-posframe are having trouble #80
---
 ivy-posframe.el | 42 +++++++++++++++++++++++++++++-------------
 1 file changed, 29 insertions(+), 13 deletions(-)

diff --git a/ivy-posframe.el b/ivy-posframe.el
index 49cfb09..5679222 100644
--- a/ivy-posframe.el
+++ b/ivy-posframe.el
@@ -453,21 +453,37 @@ selection, non-nil otherwise."
   (interactive)
   (unless (require 'avy nil 'noerror)
     (error "Package avy isn't installed"))
+  (unless (require 'avy nil 'noerror)
+    (error "Package avy isn't installed"))
+  (cl-case (length ivy-text)
+    (0
+     (user-error "Need at least one char of input"))
+    (1
+     (let ((swiper-min-highlight 1))
+       (swiper--update-input-ivy))))
   (unless (string= ivy-text "")
     (let ((candidate (ivy-posframe--swiper-avy-candidate)))
-      (if (eq (cdr candidate) (ivy-posframe--window))
-          (let ((cand-text (with-current-buffer ivy-posframe-buffer
-                             (save-excursion
-                               (goto-char (car candidate))
-                               (buffer-substring-no-properties
-                                (line-beginning-position)
-                                (line-end-position))))))
-            (ivy-set-index (cl-position cand-text ivy--old-cands :test 
#'string=))
-            (ivy--exhibit)
-            (ivy-done)
-            (ivy-call))
-        (ivy-quit-and-run
-          (avy-action-goto (avy-candidate-beg candidate)))))))
+      (cond ((eq (cdr candidate) (ivy-posframe--window))
+             (let ((cand-text (with-current-buffer ivy-posframe-buffer
+                                (save-excursion
+                                  (goto-char (car candidate))
+                                  (buffer-substring
+                                   (line-beginning-position)
+                                   (line-end-position))))))
+               (ivy-set-index
+                ;; cand-text may include "> ", using a hack way
+                ;; to deal with it.
+                (or (cl-some (lambda (n)
+                               (cl-position (substring cand-text n) 
ivy--old-cands :test #'string=))
+                             '(0 1 2 3 4))
+                    0))
+               (ivy--exhibit)
+               (ivy-done)
+               (ivy-call)))
+            ((or (consp candidate)
+                 (number-or-marker-p candidate))
+             (ivy-quit-and-run
+               (avy-action-goto (avy-candidate-beg candidate))))))))
 
 ;;; Variables
 



reply via email to

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