Commit d289938a authored by Juri Linkov's avatar Juri Linkov
Browse files

* lisp/replace.el (perform-replace): Ignore invisible matches.

In addition to checking `query-replace-skip-read-only', also
filter out matches by calling `run-hook-with-args-until-failure'
on `isearch-filter-predicates', and also check `search-invisible'
for t or call `isearch-range-invisible'.
(replace-dehighlight): Call `isearch-clean-overlays'.

Fixes: debbugs:11746
parent 66fc57e3
......@@ -236,11 +236,14 @@ callers to fit the image to a frame other than the selected frame.
entries displayed by `Info-index-next', `Info-virtual-index' and
`info-apropos'.
** Isearch
** Search and Replace
*** `C-x 8 RET' in Isearch mode reads a character by its Unicode name
and adds it to the search string.
*** `query-replace' skips invisible text when `search-invisible' is nil,
and opens overlays with hidden text when `search-invisible' is `open'.
** MH-E has been updated to MH-E version 8.5.
See MH-E-NEWS for details.
......
2013-05-27 Juri Linkov <juri@jurta.org>
* replace.el (perform-replace): Ignore invisible matches.
In addition to checking `query-replace-skip-read-only', also
filter out matches by calling `run-hook-with-args-until-failure'
on `isearch-filter-predicates', and also check `search-invisible'
for t or call `isearch-range-invisible'.
(replace-dehighlight): Call `isearch-clean-overlays'. (Bug#11746)
2013-05-27 Juri Linkov <juri@jurta.org>
* isearch.el (isearch-filter-predicates): Rename from
......
......@@ -2003,10 +2003,18 @@ make, or the user didn't cancel the call."
match))))))
;; Optionally ignore matches that have a read-only property.
(unless (and query-replace-skip-read-only
(text-property-not-all
(nth 0 real-match-data) (nth 1 real-match-data)
'read-only nil))
(when (and (or (not query-replace-skip-read-only)
(not (text-property-not-all
(nth 0 real-match-data) (nth 1 real-match-data)
'read-only nil)))
;; Optionally filter out matches.
(run-hook-with-args-until-failure
'isearch-filter-predicates
(nth 0 real-match-data) (nth 1 real-match-data))
;; Optionally ignore invisible matches.
(or (eq search-invisible t)
(not (isearch-range-invisible
(nth 0 real-match-data) (nth 1 real-match-data)))))
;; Calculate the replacement string, if necessary.
(when replacements
......@@ -2251,6 +2259,8 @@ make, or the user didn't cancel the call."
(delete-overlay replace-overlay))
(when query-replace-lazy-highlight
(lazy-highlight-cleanup lazy-highlight-cleanup)
(setq isearch-lazy-highlight-last-string nil)))
(setq isearch-lazy-highlight-last-string nil))
;; Close overlays opened by `isearch-range-invisible' in `perform-replace'.
(isearch-clean-overlays))
;;; replace.el ends here
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment