diff options
| -rw-r--r-- | lisp/ChangeLog | 6 | ||||
| -rw-r--r-- | lisp/isearch.el | 13 |
2 files changed, 16 insertions, 3 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c3a01dac664..26376afe239 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2014-11-24 Eli Zaretskii <eliz@gnu.org> + + * isearch.el (isearch-update): Don't assume + pos-visible-in-window-p will return nil when point is hscrolled + out of view. (Bug#19157) + 2014-11-20 Andrey Kotlarski <m00naticus@gmail.com> * net/eww.el (eww-browse-url): Optionally create new eww buffer. diff --git a/lisp/isearch.el b/lisp/isearch.el index f0ce7050e78..c3e473a2ba6 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -974,10 +974,17 @@ The last thing it does is to run `isearch-update-post-hook'." (other-window 1)) (goto-char found-point)) ;; Keep same hscrolling as at the start of the search when possible - (let ((current-scroll (window-hscroll))) + (let ((current-scroll (window-hscroll)) + visible-p) (set-window-hscroll (selected-window) isearch-start-hscroll) - (unless (pos-visible-in-window-p) - (set-window-hscroll (selected-window) current-scroll)))) + (setq visible-p (pos-visible-in-window-p nil nil t)) + (if (or (not visible-p) + ;; When point is not visible because of hscroll, + ;; pos-visible-in-window-p returns non-nil, but + ;; the X coordinate it returns is 1 pixel beyond + ;; the last visible one. + (>= (car visible-p) (window-body-width nil t))) + (set-window-hscroll (selected-window) current-scroll)))) (if isearch-other-end (if (< isearch-other-end (point)) ; isearch-forward? (isearch-highlight isearch-other-end (point)) |
