From: Chris Hanson Date: Mon, 29 Apr 1991 11:23:46 +0000 (+0000) Subject: M-x replace-string and M-x replace-regexp are supposed to leave point X-Git-Tag: 20090517-FFI~10701 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=a3ea46d36137db552b6360275a40aa2a2c44c052;p=mit-scheme.git M-x replace-string and M-x replace-regexp are supposed to leave point at the end of the last replacement. --- diff --git a/v7/src/edwin/replaz.scm b/v7/src/edwin/replaz.scm index b5f313454..765b7a73b 100644 --- a/v7/src/edwin/replaz.scm +++ b/v7/src/edwin/replaz.scm @@ -1,6 +1,6 @@ ;;; -*-Scheme-*- ;;; -;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/replaz.scm,v 1.67 1991/04/26 03:13:19 cph Exp $ +;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/replaz.scm,v 1.68 1991/04/29 11:23:46 cph Exp $ ;;; ;;; Copyright (c) 1986, 1989-91 Massachusetts Institute of Technology ;;; @@ -131,14 +131,18 @@ and \\ means insert what matched th \\(...\\) in REGEXP." (define (replacement-loop point) (undo-boundary! point) - (cond ((not (find-next-occurrence point)) - (done false)) - ((mark< point (re-match-end 0)) - (replacement-loop (perform-replacement))) - ((not (group-end? point)) - (replacement-loop (mark1+ point))) - (else - (done false)))) + (let ((done + (lambda () + (set-current-point! point) + (done false)))) + (cond ((not (find-next-occurrence point)) + (done)) + ((mark< point (re-match-end 0)) + (replacement-loop (perform-replacement))) + ((not (group-end? point)) + (replacement-loop (mark1+ point))) + (else + (done))))) (define (query-loop point) (undo-boundary! point)