Subject: 27.0.50; lazy-highlight fails with a quick key sequence
From: Juri Linkov <[email-masked]>
To: [email-masked]
Date: Sun, 23 Dec 2018 02:05:19 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Quickly typing `C-s C-s' to repeat the last search in a file with long
wrapped lines sometimes fails to lazy-highlight other matches.

This is because the condition in isearch-lazy-highlight-new-loop relies on
the return value of `(sit-for 0)' and when there is input pending like the
second `C-s' keystroke unprocessed due to the large file size with long
lines, it doesn't start a new lazy-highlight loop.

I noticed this problem only after starting to use lazy-count that fails
to count matches.  Before that, there was no clear indication that
lazy-highlight failed in such cases.

I doubt that relying on its return value was intentional, so I propose
the following fix:

diff --git a/lisp/isearch.el b/lisp/isearch.el
index dd0973d4ea..5876e70305 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -3661,7 +3661,7 @@ isearch-lazy-highlight-new-loop
 search string to change or the window to scroll).  It is also used
 by other Emacs features."
   (when (and (null executing-kbd-macro)
-             (sit-for 0)         ;make sure (window-start) is credible
+             (progn (sit-for 0) t) ;make sure (window-start) is credible
              (or (not (equal isearch-string
                              isearch-lazy-highlight-last-string))
                  (not (memq (selected-window)