From 54d9de11684938dfc813a00af46c02e0e7b83f15 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Thu, 21 Feb 2013 19:45:12 +0200 Subject: [PATCH] * lisp/isearch.el (isearch-lazy-highlight-new-loop): Set `isearch-lazy-highlight-start' and `isearch-lazy-highlight-end' to `isearch-other-end' if it is not nil. * lisp/replace.el (replace-highlight): Let-bind `isearch-other-end' to `match-beg'. * lisp/textmodes/ispell.el (ispell-highlight-spelling-error-overlay): Let-bind `isearch-other-end' to `start', `isearch-forward' to t and `isearch-error' to nil. Fixes: debbugs:13402 --- lisp/ChangeLog | 13 +++++++++++++ lisp/isearch.el | 14 ++++++++++++-- lisp/replace.el | 1 + lisp/textmodes/ispell.el | 5 ++++- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a3cd719895..7a9cdcc20e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,16 @@ +2013-02-21 Juri Linkov + + * isearch.el (isearch-lazy-highlight-new-loop): + Set `isearch-lazy-highlight-start' and `isearch-lazy-highlight-end' + to `isearch-other-end' if it is not nil. (Bug#13402) + + * replace.el (replace-highlight): Let-bind `isearch-other-end' + to `match-beg'. + + * textmodes/ispell.el (ispell-highlight-spelling-error-overlay): + Let-bind `isearch-other-end' to `start', `isearch-forward' to t + and `isearch-error' to nil. + 2013-02-20 Fabián Ezequiel Gallina * progmodes/python.el (python-info-current-defun): Enhance diff --git a/lisp/isearch.el b/lisp/isearch.el index 972fb0058d..ad5331f5bf 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -2936,8 +2936,15 @@ by other Emacs features." (setq isearch-lazy-highlight-window (selected-window) isearch-lazy-highlight-window-start (window-start) isearch-lazy-highlight-window-end (window-end) - isearch-lazy-highlight-start (point) - isearch-lazy-highlight-end (point) + ;; Start lazy-highlighting at the beginning of the found + ;; match (`isearch-other-end'). If no match, use point. + ;; One of the next two variables (depending on search direction) + ;; is used to define the starting position of lazy-highlighting + ;; and also to remember the current position of point between + ;; calls of `isearch-lazy-highlight-update', and another variable + ;; is used to define where the wrapped search must stop. + isearch-lazy-highlight-start (or isearch-other-end (point)) + isearch-lazy-highlight-end (or isearch-other-end (point)) isearch-lazy-highlight-wrapped nil isearch-lazy-highlight-last-string isearch-string isearch-lazy-highlight-case-fold-search isearch-case-fold-search @@ -3035,6 +3042,9 @@ Attempt to do the search exactly the way the pending Isearch would." (overlay-put ov 'priority 1000) (overlay-put ov 'face lazy-highlight-face) (overlay-put ov 'window (selected-window)))) + ;; Remember the current position of point for + ;; the next call of `isearch-lazy-highlight-update' + ;; when `lazy-highlight-max-at-a-time' is too small. (if isearch-lazy-highlight-forward (setq isearch-lazy-highlight-end (point)) (setq isearch-lazy-highlight-start (point))))) diff --git a/lisp/replace.el b/lisp/replace.el index 7757426cf9..3eaa5ccf6b 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -2198,6 +2198,7 @@ make, or the user didn't cancel the call." replace-regexp-lax-whitespace) (isearch-case-fold-search case-fold-search) (isearch-forward t) + (isearch-other-end match-beg) (isearch-error nil)) (isearch-lazy-highlight-new-loop range-beg range-end)))) diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index 7bdb587c56..1d28de7299 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -2497,7 +2497,10 @@ The variable `ispell-highlight-face' selects the face to use for highlighting." (regexp-quote (buffer-substring-no-properties start end)) "\\b")) (isearch-regexp t) - (isearch-case-fold-search nil)) + (isearch-case-fold-search nil) + (isearch-forward t) + (isearch-other-end start) + (isearch-error nil)) (isearch-lazy-highlight-new-loop (if (boundp 'reg-start) reg-start) (if (boundp 'reg-end) reg-end))) -- 2.39.2