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

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

[elpa] master ae3576a 037/184: swiper.el (swiper-isearch): Fix scroll on


From: Oleh Krehel
Subject: [elpa] master ae3576a 037/184: swiper.el (swiper-isearch): Fix scroll on RET
Date: Wed, 16 Oct 2019 13:14:44 -0400 (EDT)

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

    swiper.el (swiper-isearch): Fix scroll on RET
    
    Re #2159
---
 swiper.el | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/swiper.el b/swiper.el
index ff1e88c..b2c884b 100644
--- a/swiper.el
+++ b/swiper.el
@@ -1033,6 +1033,12 @@ WND, when specified is the window."
 (defvar evil-ex-search-direction)
 (declare-function evil-ex-search-activate-highlight "evil-ex")
 
+(defun swiper--maybe-recenter ()
+  (cond (swiper-action-recenter
+         (recenter))
+        ((and swiper--current-window-start
+              (swiper--recenter-p))
+         (set-window-start (selected-window) swiper--current-window-start))))
 
 (defun swiper--action (x)
   "Goto line X."
@@ -1055,11 +1061,7 @@ WND, when specified is the window."
         (when (and (re-search-forward re (line-end-position) t) 
swiper-goto-start-of-match)
           (goto-char (match-beginning 0)))
         (swiper--ensure-visible)
-        (cond (swiper-action-recenter
-               (recenter))
-              ((and swiper--current-window-start
-                    (swiper--recenter-p))
-               (set-window-start (selected-window) 
swiper--current-window-start)))
+        (swiper--maybe-recenter)
         (when (/= (point) swiper--opoint)
           (unless (and transient-mark-mode mark-active)
             (when (eq ivy-exit 'done)
@@ -1406,21 +1408,26 @@ that we search only for one character."
           (and (> (length x) 0)
                (setq x (get-text-property 0 'point x))))
       (with-ivy-window
-        (goto-char x)
+          (goto-char x)
         (when (and (or (eq this-command 'ivy-previous-line-or-history)
                        (and (eq this-command 'ivy-done)
                             (eq last-command 'ivy-previous-line-or-history)))
                    (looking-back ivy--old-re (line-beginning-position)))
           (goto-char (match-beginning 0)))
         (isearch-range-invisible (point) (1+ (point)))
-        (when swiper-action-recenter
+        (swiper--maybe-recenter)
+        (when (and (swiper--recenter-p)
+                   (or
+                    (< (point) (window-start))
+                    (> (point) (window-end (ivy-state-window ivy-last) t))))
           (recenter))
+        (setq swiper--current-window-start (window-start))
         (unless (eq ivy-exit 'done)
           (swiper--cleanup)
           (swiper--delayed-add-overlays)
           (swiper--add-cursor-overlay
            (ivy-state-window ivy-last))))
-    (swiper--cleanup)))
+      (swiper--cleanup)))
 
 (defun swiper-isearch-thing-at-point ()
   "Insert `symbol-at-point' into the minibuffer of `swiper-isearch'.



reply via email to

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