From 45c477b462dfaf8c5a8d48531df517337c47fdc3 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Mon, 2 Oct 2000 19:51:03 +0000 Subject: [PATCH] (isearch-lazy-highlight-update): Don't put a lazy highlighting overlay with a different face over the overlay isearch uses to highlight the current match because that can lead to bad face combinations. --- lisp/ChangeLog | 5 +++++ lisp/isearch.el | 35 ++++++++++++++++++++++------------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a91e59c4f04..05423217958 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,10 @@ 2000-10-02 Gerd Moellmann + * isearch.el (isearch-lazy-highlight-update): Don't put a lazy + highlighting overlay with a different face over the overlay + isearch uses to highlight the current match because that can lead + to bad face combinations. + * loadup.el (toplevel): Load faces before isearch. * isearch.el (isearch-faces): New custom group. diff --git a/lisp/isearch.el b/lisp/isearch.el index 41b94cf9989..8367a3b809a 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -1933,19 +1933,28 @@ Attempt to do the search exactly the way the pending isearch would." isearch-lazy-highlight-start)) (let ((found (isearch-lazy-highlight-search))) ;do search (if found - ;; found the next match - (let ((ov (make-overlay (match-beginning 0) - (match-end 0)))) - (overlay-put ov 'face 'isearch-lazy-highlight-face) - (overlay-put ov 'priority 0) - (setq isearch-lazy-highlight-overlays - (cons ov isearch-lazy-highlight-overlays)) - (setq isearch-lazy-highlight-timer - (run-at-time isearch-lazy-highlight-interval nil - 'isearch-lazy-highlight-update)) - (if isearch-forward - (setq isearch-lazy-highlight-end (point)) - (setq isearch-lazy-highlight-start (point)))) + (progn + ;; Don't put a second overlay with a different face + ;; over/under the overlay isearch uses to highlight the + ;; current match. That can lead to odd looking face + ;; combinations. + (unless (memq isearch-overlay + (overlays-at (match-beginning 0))) + ;; found the next match + (let ((ov (make-overlay (match-beginning 0) + (match-end 0)))) + (overlay-put ov 'face isearch-lazy-highlight-face) + (overlay-put ov 'priority 0) + (setq isearch-lazy-highlight-overlays + (cons ov isearch-lazy-highlight-overlays)))) + + (setq isearch-lazy-highlight-timer + (run-at-time isearch-lazy-highlight-interval nil + 'isearch-lazy-highlight-update)) + (if isearch-forward + (setq isearch-lazy-highlight-end (point)) + (setq isearch-lazy-highlight-start (point)))) + ;; found no next match (when (not isearch-lazy-highlight-wrapped) ;; let's try wrapping around the end of the buffer -- 2.39.2