changeset 35225:eee3a978c12e

(isearch-lazy-highlight-update): Don't look for more potential matches once maximum is exceeded. Use overlays-in to check correctly for overlap with current match. Ignore empty matches.
author Richard M. Stallman <rms@gnu.org>
date Thu, 11 Jan 2001 08:08:51 +0000
parents 87ccb00542e1
children e1ba079c4709
files lisp/isearch.el
diffstat 1 files changed, 20 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/isearch.el	Thu Jan 11 08:08:26 2001 +0000
+++ b/lisp/isearch.el	Thu Jan 11 08:08:51 2001 +0000
@@ -1987,28 +1987,32 @@
     (isearch-lazy-highlight-remove-overlays (window-start)
 					    (window-end nil t))
 
-    (when (or (null isearch-lazy-highlight-max)
-	      (< (length isearch-lazy-highlight-overlays)
-		 isearch-lazy-highlight-max))
-      (save-excursion
-	(save-match-data
-	  (let (found)
-	    (goto-char isearch-lazy-highlight-start)
-	    (while (let ((case-fold-search isearch-case-fold-search))
-		     (funcall (cond (isearch-word 'word-search-forward)
-				    (isearch-regexp 're-search-forward)
-				    (t 'search-forward))
-			      isearch-string
-			      isearch-lazy-highlight-end
-			      t))
-	      ;; Found the next match.
+    (save-excursion
+      (save-match-data
+	(let (found)
+	  (goto-char isearch-lazy-highlight-start)
+	  (while (and (or (null isearch-lazy-highlight-max)
+			  (< (length isearch-lazy-highlight-overlays)
+			     isearch-lazy-highlight-max))
+		      (< (point) isearch-lazy-highlight-end)
+		      (let ((case-fold-search isearch-case-fold-search))
+			(funcall (cond (isearch-word 'word-search-forward)
+				       (isearch-regexp 're-search-forward)
+				       (t 'search-forward))
+				 isearch-string
+				 isearch-lazy-highlight-end
+				 t)))
+	    ;; Found the next match.
+	    ;; If it is empty, ignore it and move on.
+	    (if (= (match-beginning 0) (match-end 0))
+		(forward-char 1)
 	      (let ((ov (make-overlay (match-beginning 0)
 				      (match-end 0))))
 		;; If OV overlaps the current isearch overlay, suppress
 		;; its face property; otherwise, we sometimes get odd
 		;; looking face combinations.
 		(unless (memq isearch-overlay
-			      (overlays-at (match-beginning 0)))
+			      (overlays-in (match-beginning 0) (match-end 0)))
 		  (overlay-put ov 'face isearch-lazy-highlight-face))
 
 		(overlay-put ov 'priority 0)