From ddbe3d5ff3c3fcd4a74b51ab6a8ced289306936a Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 16 Dec 2001 03:56:40 +0000 Subject: [PATCH] (isearch-start-hscroll): New variable. (isearch-mode): Set isearch-start-hscroll. (isearch-update): Restore original hscrolling if possible. --- lisp/isearch.el | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lisp/isearch.el b/lisp/isearch.el index f3023b82c1a..82d3d781d02 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -366,6 +366,7 @@ Default value, nil, means edit the string instead." (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 @@ is treated as a regexp. See \\[isearch-forward] for more info." 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 @@ is treated as a regexp. See \\[isearch-forward] for more info." (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)) -- 2.39.2