Commit c0b45763 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(perform-replace): Calculate match-again

before skipping read-only matches.
parent d6f0f3e0
2005-12-26 Richard M. Stallman <rms@gnu.org>
 
* replace.el (perform-replace): Calculate match-again
before skipping read-only matches.
* paren.el (paren-showing-faces): New group.
(show-paren-match, show-paren-mismatch): Move to that group.
 
......
......@@ -1474,32 +1474,33 @@ make, or the user didn't cancel the call."
;; For speed, use only integers and
;; reuse the list used last time.
(replace-match-data t real-match-data)))))
;; Record whether the match is nonempty, to avoid an infinite loop
;; repeatedly matching the same empty string.
(setq nonempty-match
(/= (nth 0 real-match-data) (nth 1 real-match-data)))
;; If the match is empty, record that the next one can't be
;; adjacent.
;; Otherwise, if matching a regular expression, do the next
;; match now, since the replacement for this match may
;; affect whether the next match is adjacent to this one.
;; If that match is empty, don't use it.
(setq match-again
(and nonempty-match
(or (not regexp-flag)
(and (looking-at search-string)
(let ((match (match-data)))
(and (/= (nth 0 match) (nth 1 match))
match))))))
;; Optionally ignore matches that have a read-only property.
(unless (and query-replace-skip-read-only
(text-property-not-all
(match-beginning 0) (match-end 0)
(nth 0 real-match-data) (nth 1 real-match-data)
'read-only nil))
;; Record whether the match is nonempty, to avoid an infinite loop
;; repeatedly matching the same empty string.
(setq nonempty-match
(/= (nth 0 real-match-data) (nth 1 real-match-data)))
;; If the match is empty, record that the next one can't be
;; adjacent.
;; Otherwise, if matching a regular expression, do the next
;; match now, since the replacement for this match may
;; affect whether the next match is adjacent to this one.
;; If that match is empty, don't use it.
(setq match-again
(and nonempty-match
(or (not regexp-flag)
(and (looking-at search-string)
(let ((match (match-data)))
(and (/= (nth 0 match) (nth 1 match))
match))))))
;; Calculate the replacement string, if necessary.
(when replacements
(set-match-data real-match-data)
......
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