diff options
author | Juri Linkov <juri@jurta.org> | 2013-05-28 02:02:37 +0300 |
---|---|---|
committer | Juri Linkov <juri@jurta.org> | 2013-05-28 02:02:37 +0300 |
commit | d289938a057ab8572fc60eb5367980eeef35d600 (patch) | |
tree | 90ca18e1aeef7cc5f824ce5ed8d8ac99887eeb4e | |
parent | 66fc57e3cdc9ffc2bed7a457a39a210fcf773e98 (diff) | |
download | emacs-d289938a057ab8572fc60eb5367980eeef35d600.tar.gz emacs-d289938a057ab8572fc60eb5367980eeef35d600.tar.bz2 emacs-d289938a057ab8572fc60eb5367980eeef35d600.zip |
* 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
-rw-r--r-- | etc/NEWS | 5 | ||||
-rw-r--r-- | lisp/ChangeLog | 9 | ||||
-rw-r--r-- | lisp/replace.el | 20 |
3 files changed, 28 insertions, 6 deletions
@@ -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. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 486e5d75343..cc3122f7e6f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,14 @@ 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 `isearch-filter-predicate'. Doc fix. (Bug#11378) (isearch-message-prefix): Display text from the property diff --git a/lisp/replace.el b/lisp/replace.el index 1bebff448fa..7c26f1ed063 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -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 |