diff --git a/lisp/isearch.el b/lisp/isearch.el index 5262435..15143ce 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -332,7 +332,7 @@ (define-obsolete-variable-alias 'isearch-lazy-highlight-max-at-a-time 'lazy-highlight-max-at-a-time "22.1") -(defcustom lazy-highlight-max-at-a-time 20 +(defcustom lazy-highlight-max-at-a-time nil "Maximum matches to highlight at a time (for `lazy-highlight'). Larger values may reduce Isearch's responsiveness to user input; smaller values make matches highlight slowly. @@ -3122,13 +3122,13 @@ (define-obsolete-variable-alias 'isearch-lazy-highlight-word (defvar isearch-lazy-highlight-forward nil) (defvar isearch-lazy-highlight-error nil) -(defun lazy-highlight-cleanup (&optional force) +(defun lazy-highlight-cleanup (&optional force postpone) "Stop lazy highlighting and remove extra highlighting from current buffer. FORCE non-nil means do it whether or not `lazy-highlight-cleanup' is nil. This function is called when exiting an incremental search if `lazy-highlight-cleanup' is non-nil." (interactive '(t)) - (if (or force lazy-highlight-cleanup) + (when (and (or force lazy-highlight-cleanup) (not postpone)) (while isearch-lazy-highlight-overlays (delete-overlay (car isearch-lazy-highlight-overlays)) (setq isearch-lazy-highlight-overlays @@ -3173,7 +3173,7 @@ (defun isearch-lazy-highlight-new-loop (&optional beg end) (not (equal isearch-error isearch-lazy-highlight-error)))) ;; something important did indeed change - (lazy-highlight-cleanup t) ;kill old loop & remove overlays + (lazy-highlight-cleanup t (not (equal isearch-string ""))) ;stop old timer (setq isearch-lazy-highlight-error isearch-error) ;; It used to check for `(not isearch-error)' here, but actually ;; lazy-highlighting might find matches to highlight even when @@ -3204,7 +3204,7 @@ (defun isearch-lazy-highlight-new-loop (&optional beg end) (unless (equal isearch-string "") (setq isearch-lazy-highlight-timer (run-with-idle-timer lazy-highlight-initial-delay nil - 'isearch-lazy-highlight-update))))) + 'isearch-lazy-highlight-start))))) (defun isearch-lazy-highlight-search () "Search ahead for the next or previous match, for lazy highlighting. @@ -3249,6 +3249,10 @@ (defun isearch-lazy-highlight-search () success) (error nil))) +(defun isearch-lazy-highlight-start () + (lazy-highlight-cleanup t) ;remove old overlays + (isearch-lazy-highlight-update)) + (defun isearch-lazy-highlight-update () "Update highlighting of other matches for current search." (let ((max lazy-highlight-max-at-a-time)