]> code.delx.au - gnu-emacs-elpa/commitdiff
Make "j"/"k" feedback more solid in ivy-occur buffers
authorOleh Krehel <ohwoeowho@gmail.com>
Mon, 11 Apr 2016 14:16:02 +0000 (16:16 +0200)
committerOleh Krehel <ohwoeowho@gmail.com>
Mon, 11 Apr 2016 14:17:47 +0000 (16:17 +0200)
* ivy.el (ivy-occur-timer): New defvar.
(ivy-occur-press): Do the overlays also for `counsel-grep'. Put
`swiper--cleanup' on a 1 second timer.

Tip: pressing "c" in *ivy-occur* buffers toggles to "calling state".
When in the calling state, "j" and "k" will auto-follow the candidate.

ivy.el

diff --git a/ivy.el b/ivy.el
index d5ce2b4335ec6a74f2b5a25cf77787190fe23c4d..7052f48068f2f3cbd0acf4f4149caa59b3ecf49b 100644 (file)
--- a/ivy.el
+++ b/ivy.el
@@ -2912,6 +2912,7 @@ EVENT gives the mouse position."
 
 (declare-function swiper--cleanup "swiper")
 (declare-function swiper--add-overlays "swiper")
+(defvar ivy-occur-timer nil)
 
 (defun ivy-occur-press ()
   "Execute action for the current candidate."
@@ -2944,7 +2945,7 @@ EVENT gives the mouse position."
                      (cdr (assoc str coll))
                    str))
         (if (memq (ivy-state-caller ivy-last)
-                  '(swiper counsel-git-grep))
+                  '(swiper counsel-git-grep counsel-grep))
             (with-current-buffer (window-buffer (selected-window))
               (swiper--cleanup)
               (swiper--add-overlays
@@ -2952,7 +2953,9 @@ EVENT gives the mouse position."
                (line-beginning-position)
                (line-end-position)
                (selected-window))
-              (run-at-time 0.5 nil 'swiper--cleanup)))))))
+              (when (timerp ivy-occur-timer)
+                (cancel-timer ivy-occur-timer))
+              (setq ivy-occur-timer (run-at-time 1.0 nil 'swiper--cleanup))))))))
 
 (defvar ivy-help-file (let ((default-directory
                              (if load-file-name