changeset 42067:f38a270798ca

(isearch-start-hscroll): New variable. (isearch-mode): Set isearch-start-hscroll. (isearch-update): Restore original hscrolling if possible.
author Richard M. Stallman <rms@gnu.org>
date Sun, 16 Dec 2001 03:56:40 +0000
parents 6612a220ef84
children 81cd8cc0048d
files lisp/isearch.el
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/isearch.el	Sun Dec 16 03:53:15 2001 +0000
+++ b/lisp/isearch.el	Sun Dec 16 03:56:40 2001 +0000
@@ -366,6 +366,7 @@
 (defvar isearch-wrapped nil)	; Searching restarted from the top (bottom).
 (defvar isearch-barrier 0)
 (defvar isearch-just-started nil)
+(defvar isearch-start-hscroll 0)	; hscroll when starting the search.
 
 ; case-fold-search while searching.
 ;   either nil, t, or 'yes.  'yes means the same as t except that mixed
@@ -557,6 +558,7 @@
 	isearch-other-end nil
 	isearch-small-window nil
 	isearch-just-started t
+	isearch-start-hscroll (window-hscroll)
 
 	isearch-opoint (point)
 	search-ring-yank-pointer nil
@@ -636,8 +638,13 @@
                                              (window-hscroll))
                          (set-window-hscroll (selected-window) 0))
                 (other-window 1))
-              (goto-char found-point)))
-        (if isearch-other-end
+              (goto-char found-point))
+	  ;; Keep same hscrolling as at the start of the search when possible
+	  (let ((current-scroll (window-hscroll)))
+	    (set-window-hscroll (selected-window) isearch-start-hscroll)
+	    (unless (pos-visible-in-window-p)
+	      (set-window-hscroll (selected-window) current-scroll))))
+	(if isearch-other-end
             (if (< isearch-other-end (point)) ; isearch-forward?
                 (isearch-highlight isearch-other-end (point))
               (isearch-highlight (point) isearch-other-end))