comparison lisp/replace.el @ 83550:17e0dd217877

Merged from emacs@sv.gnu.org. Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-536 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-537 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-538 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-539 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-540 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-541 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-542 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-543 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-544 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-545 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-546 Update from erc--emacs--22 * emacs@sv.gnu.org/emacs--devo--0--patch-547 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-548 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-549 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-550 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-551 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-552 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-553 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-554 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-555 erc-iswitchb: Temporarily enable iswitchb mode * emacs@sv.gnu.org/emacs--devo--0--patch-556 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-557 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-558 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-559 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-560 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-561 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-562 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-563 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-564 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-565 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-566 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-567 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-568 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-569 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-570 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-571 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-572 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-573 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-574 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-575 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-576 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-577 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-578 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-579 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-580 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-581 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-582 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-583 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-584 Fix admin/quick-install-emacs to work with recent versions of autoconf * emacs@sv.gnu.org/gnus--rel--5.10--patch-171 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-172 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-173 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-174 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-175 Update from CVS: lisp/legacy-gnus-agent.el: Add Copyright notice. * emacs@sv.gnu.org/gnus--rel--5.10--patch-176 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-177 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-178 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-179 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-180 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-181 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-182 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-183 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-184 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-185 Merge from emacs--devo--0 git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-590
author Karoly Lorentey <lorentey@elte.hu>
date Mon, 01 Jan 2007 17:38:32 +0000
parents 34b20acf743f
children 61dcb71f259c 6588c6259dfb
comparison
equal deleted inserted replaced
83549:8d80de0a1ac6 83550:17e0dd217877
1339 (aset data 2 (if (consp next) next (aref data 3)))))) 1339 (aset data 2 (if (consp next) next (aref data 3))))))
1340 (car (aref data 2))) 1340 (car (aref data 2)))
1341 1341
1342 (defun replace-match-data (integers reuse &optional new) 1342 (defun replace-match-data (integers reuse &optional new)
1343 "Like `match-data', but markers in REUSE get invalidated. 1343 "Like `match-data', but markers in REUSE get invalidated.
1344 If NEW is non-NIL, it is set and returned instead of fresh data, 1344 If NEW is non-nil, it is set and returned instead of fresh data,
1345 but coerced to the correct value of INTEGERS." 1345 but coerced to the correct value of INTEGERS."
1346 (or (and new 1346 (or (and new
1347 (progn 1347 (progn
1348 (set-match-data new) 1348 (set-match-data new)
1349 (and (eq new reuse) 1349 (and (eq new reuse)
1355 "Make a replacement with `replace-match', editing `\\?'. 1355 "Make a replacement with `replace-match', editing `\\?'.
1356 NEWTEXT, FIXEDCASE, LITERAL are just passed on. If NOEDIT is true, no 1356 NEWTEXT, FIXEDCASE, LITERAL are just passed on. If NOEDIT is true, no
1357 check for `\\?' is made to save time. MATCH-DATA is used for the 1357 check for `\\?' is made to save time. MATCH-DATA is used for the
1358 replacement. In case editing is done, it is changed to use markers. 1358 replacement. In case editing is done, it is changed to use markers.
1359 1359
1360 The return value is non-NIL if there has been no `\\?' or NOEDIT was 1360 The return value is non-nil if there has been no `\\?' or NOEDIT was
1361 passed in. If LITERAL is set, no checking is done, anyway." 1361 passed in. If LITERAL is set, no checking is done, anyway."
1362 (unless (or literal noedit) 1362 (unless (or literal noedit)
1363 (setq noedit t) 1363 (setq noedit t)
1364 (while (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\\\?\\)" 1364 (while (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\\\?\\)"
1365 newtext) 1365 newtext)
1484 (and limit (>= (point) limit)))))) 1484 (and limit (>= (point) limit))))))
1485 (funcall search-function search-string limit t) 1485 (funcall search-function search-string limit t)
1486 ;; For speed, use only integers and 1486 ;; For speed, use only integers and
1487 ;; reuse the list used last time. 1487 ;; reuse the list used last time.
1488 (replace-match-data t real-match-data))))) 1488 (replace-match-data t real-match-data)))))
1489 1489
1490 ;; Record whether the match is nonempty, to avoid an infinite loop 1490 ;; Record whether the match is nonempty, to avoid an infinite loop
1491 ;; repeatedly matching the same empty string. 1491 ;; repeatedly matching the same empty string.
1492 (setq nonempty-match 1492 (setq nonempty-match
1493 (/= (nth 0 real-match-data) (nth 1 real-match-data))) 1493 (/= (nth 0 real-match-data) (nth 1 real-match-data)))
1494 1494