diff --git a/lisp/files.el b/lisp/files.el index 8d6ecb66bc6..89c7334c5a4 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2726,6 +2726,9 @@ beginning and end of the buffer." (defvar-local auto-narrow--isearch-widen-automatically nil "Internal variable used by `auto-narrow-mode'.") +(defvar-local auto-narrow--isearch-lazy-highlight nil + "Internal variable used by `auto-narrow-mode'.") + (defvar-local auto-narrow--initialized nil "Internal variable used by `auto-narrow-mode'.") @@ -2733,7 +2736,8 @@ beginning and end of the buffer." "Conditionally widen display when `auto-narrow-mode' is in effect." (when auto-narrow-mode (setq-local widen-automatically t - isearch-widen-automatically t) + isearch-widen-automatically t + isearch-lazy-highlight auto-narrow--isearch-lazy-highlight) (if (memq this-command '(narrow-to-region narrow-to-defun narrow-to-page)) (setq auto-narrow--narrowing-state 'explicit widen-automatically auto-narrow--widen-automatically @@ -2752,6 +2756,7 @@ beginning and end of the buffer." (run-hooks 'auto-narrow-hook) (setq auto-narrow--widen-automatically widen-automatically auto-narrow--isearch-widen-automatically isearch-widen-automatically + auto-narrow--isearch-lazy-highlight isearch-lazy-highlight auto-narrow--narrowing-state 'auto auto-narrow--initialized t)) (let (point cur-point-min buf-point-min buf-point-max size) diff --git a/lisp/isearch.el b/lisp/isearch.el index a6e034df6b9..29036201ad8 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -3658,7 +3658,10 @@ Optional third argument, if t, means if fail just return nil (no error). (isearch-search-string isearch-string nil t)) (if (and (not isearch-success) (buffer-narrowed-p) isearch-widen-automatically widen-automatically) - (widen) + (progn + (when auto-narrow-mode + (setq-local isearch-lazy-highlight nil)) + (widen)) ;; Clear RETRY unless the search predicate says ;; to skip this search hit. (if (or (not isearch-success)