[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r112773: * lisp/replace.el (perform-r
From: |
Juri Linkov |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r112773: * lisp/replace.el (perform-replace): Add `skip-read-only-count', |
Date: |
Thu, 30 May 2013 02:11:41 +0300 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 112773
fixes bug: http://debbugs.gnu.org/11746
committer: Juri Linkov <address@hidden>
branch nick: trunk
timestamp: Thu 2013-05-30 02:11:41 +0300
message:
* lisp/replace.el (perform-replace): Add `skip-read-only-count',
`skip-filtered-count', `skip-invisible-count' let-bound to 0.
Increment them for corresponding conditions and report the number
of skipped occurrences in the final message.
(query-replace, query-replace-regexp, query-replace-regexp-eval)
(replace-string, replace-regexp): Doc fix.
modified:
lisp/ChangeLog
lisp/replace.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2013-05-29 15:17:12 +0000
+++ b/lisp/ChangeLog 2013-05-29 23:11:41 +0000
@@ -1,3 +1,12 @@
+2013-05-29 Juri Linkov <address@hidden>
+
+ * replace.el (perform-replace): Add `skip-read-only-count',
+ `skip-filtered-count', `skip-invisible-count' let-bound to 0.
+ Increment them for corresponding conditions and report the number
+ of skipped occurrences in the final message. (Bug#11746)
+ (query-replace, query-replace-regexp, query-replace-regexp-eval)
+ (replace-string, replace-regexp): Doc fix.
+
2013-05-29 Stefan Monnier <address@hidden>
* emacs-lisp/trace.el (trace--read-args): Provide a default.
=== modified file 'lisp/replace.el'
--- a/lisp/replace.el 2013-05-27 23:38:56 +0000
+++ b/lisp/replace.el 2013-05-29 23:11:41 +0000
@@ -250,6 +250,10 @@
matched is all caps, or capitalized, then its replacement is upcased
or capitalized.)
+Ignore read-only matches if `query-replace-skip-read-only' is non-nil,
+ignore hidden matches if `search-invisible' is nil, and ignore more
+matches using a non-nil `isearch-filter-predicates'.
+
If `replace-lax-whitespace' is non-nil, a space or spaces in the string
to be replaced will match a sequence of whitespace chars defined by the
regexp in `search-whitespace-regexp'.
@@ -300,6 +304,10 @@
all caps, or capitalized, then its replacement is upcased or
capitalized.)
+Ignore read-only matches if `query-replace-skip-read-only' is non-nil,
+ignore hidden matches if `search-invisible' is nil, and ignore more
+matches using a non-nil `isearch-filter-predicates'.
+
If `replace-regexp-lax-whitespace' is non-nil, a space or spaces in the regexp
to be replaced will match a sequence of whitespace chars defined by the
regexp in `search-whitespace-regexp'.
@@ -380,6 +388,10 @@
Preserves case in each replacement if `case-replace' and `case-fold-search'
are non-nil and REGEXP has no uppercase letters.
+Ignore read-only matches if `query-replace-skip-read-only' is non-nil,
+ignore hidden matches if `search-invisible' is nil, and ignore more
+matches using a non-nil `isearch-filter-predicates'.
+
If `replace-regexp-lax-whitespace' is non-nil, a space or spaces in the regexp
to be replaced will match a sequence of whitespace chars defined by the
regexp in `search-whitespace-regexp'.
@@ -470,6 +482,10 @@
\(Preserving case means that if the string matched is all caps, or capitalized,
then its replacement is upcased or capitalized.)
+Ignore read-only matches if `query-replace-skip-read-only' is non-nil,
+ignore hidden matches if `search-invisible' is nil, and ignore more
+matches using a non-nil `isearch-filter-predicates'.
+
If `replace-lax-whitespace' is non-nil, a space or spaces in the string
to be replaced will match a sequence of whitespace chars defined by the
regexp in `search-whitespace-regexp'.
@@ -512,6 +528,10 @@
Preserve case in each match if `case-replace' and `case-fold-search'
are non-nil and REGEXP has no uppercase letters.
+Ignore read-only matches if `query-replace-skip-read-only' is non-nil,
+ignore hidden matches if `search-invisible' is nil, and ignore more
+matches using a non-nil `isearch-filter-predicates'.
+
If `replace-regexp-lax-whitespace' is non-nil, a space or spaces in the regexp
to be replaced will match a sequence of whitespace chars defined by the
regexp in `search-whitespace-regexp'.
@@ -1934,6 +1954,9 @@
(keep-going t)
(stack nil)
(replace-count 0)
+ (skip-read-only-count 0)
+ (skip-filtered-count 0)
+ (skip-invisible-count 0)
(nonempty-match nil)
(multi-buffer nil)
(recenter-last-op nil) ; Start cycling order with initial position.
@@ -2042,20 +2065,24 @@
(and (/= (nth 0 match) (nth 1 match))
match))))))
- ;; Optionally ignore matches that have a read-only property.
- (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)))))
-
+ (cond
+ ;; Optionally ignore matches that have a read-only property.
+ ((not (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))))
+ (setq skip-read-only-count (1+ skip-read-only-count)))
+ ;; Optionally filter out matches.
+ ((not (run-hook-with-args-until-failure
+ 'isearch-filter-predicates
+ (nth 0 real-match-data) (nth 1 real-match-data)))
+ (setq skip-filtered-count (1+ skip-filtered-count)))
+ ;; Optionally ignore invisible matches.
+ ((not (or (eq search-invisible t)
+ (not (isearch-range-invisible
+ (nth 0 real-match-data) (nth 1 real-match-data)))))
+ (setq skip-invisible-count (1+ skip-invisible-count)))
+ (t
;; Calculate the replacement string, if necessary.
(when replacements
(set-match-data real-match-data)
@@ -2260,13 +2287,31 @@
(match-end 0)
(current-buffer))
(match-data t)))
- stack)))))
+ stack))))))
(replace-dehighlight))
(or unread-command-events
- (message "Replaced %d occurrence%s"
+ (message "Replaced %d occurrence%s%s"
replace-count
- (if (= replace-count 1) "" "s")))
+ (if (= replace-count 1) "" "s")
+ (if (> (+ skip-read-only-count
+ skip-filtered-count
+ skip-invisible-count) 0)
+ (format " (skipped %s)"
+ (mapconcat
+ 'identity
+ (delq nil (list
+ (if (> skip-read-only-count 0)
+ (format "%s read-only"
+ skip-read-only-count))
+ (if (> skip-invisible-count 0)
+ (format "%s invisible"
+ skip-invisible-count))
+ (if (> skip-filtered-count 0)
+ (format "%s filtered out"
+ skip-filtered-count))))
+ ", "))
+ "")))
(or (and keep-going stack) multi-buffer)))
;;; replace.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r112773: * lisp/replace.el (perform-replace): Add `skip-read-only-count',,
Juri Linkov <=