changeset 56581:6cfb1ef9200f

(query-replace-read-from): Use `query-replace-compile-replacement'. (query-replace-compile-replacement): New function. (query-replace-read-to): Use `query-replace-compile-replacement' for repeating the last command.
author David Kastrup <dak@gnu.org>
date Sun, 01 Aug 2004 12:59:09 +0000
parents 18f9ce8e85d1
children 591c2d29ca4b
files lisp/ChangeLog lisp/replace.el
diffstat 2 files changed, 33 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Aug 01 05:54:54 2004 +0000
+++ b/lisp/ChangeLog	Sun Aug 01 12:59:09 2004 +0000
@@ -1,3 +1,11 @@
+2004-08-01  David Kastrup  <dak@gnu.org>
+
+	* replace.el (query-replace-read-from): Use
+	`query-replace-compile-replacement'.
+	(query-replace-compile-replacement): New function.
+	(query-replace-read-to): Use `query-replace-compile-replacement'
+	for repeating the last command.
+
 2004-08-01  John Paul Wallington  <jpw@gnu.org>
 
 	* printing.el (toplevel, pr-ps-fast-fire, pr-ps-set-utility)
--- a/lisp/replace.el	Sun Aug 01 05:54:54 2004 +0000
+++ b/lisp/replace.el	Sun Aug 01 12:59:09 2004 +0000
@@ -94,7 +94,8 @@
 	       query-replace-from-history-variable
 	       nil t))))
       (if (and (zerop (length from)) lastto lastfrom)
-	  (cons lastfrom lastto)
+	  (cons lastfrom
+		(query-replace-compile-replacement lastto regexp-flag))
 	;; Warn if user types \n or \t, but don't reject the input.
 	(and regexp-flag
 	     (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\[nt]\\)" from)
@@ -107,15 +108,12 @@
 	       (sit-for 2)))
 	from))))
 
-(defun query-replace-read-to (from string regexp-flag)
-  "Query and return the `from' argument of a query-replace operation."
-  (let ((to (save-excursion
-	      (read-from-minibuffer
-	       (format "%s %s with: " string (query-replace-descr from))
-	       nil nil nil
-	       query-replace-to-history-variable from t))))
-    (when (and regexp-flag
-	       (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\\\[,#]" to))
+(defun query-replace-compile-replacement (to regexp-flag)
+  "Maybe convert a regexp replacement TO to Lisp.
+Returns a list suitable for `perform-replace' if necessary,
+the original string if not."
+  (if (and regexp-flag
+	   (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\\\[,#]" to))
       (let (pos list char)
 	(while
 	    (progn
@@ -142,14 +140,25 @@
 			      (cdr pos))))
 		       (setq to (substring to end)))))
 	      (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\\\[,#]" to)))
-	(setq to (nreverse (delete "" (cons to list)))))
-      (replace-match-string-symbols to)
-      (setq to (cons 'replace-eval-replacement
-		     (if (> (length to) 1)
-			 (cons 'concat to)
-		       (car to)))))
+	(setq to (nreverse (delete "" (cons to list))))
+	(replace-match-string-symbols to)
+	(cons 'replace-eval-replacement
+	      (if (cdr to)
+		  (cons 'concat to)
+		(car to))))
     to))
 
+
+(defun query-replace-read-to (from string regexp-flag)
+  "Query and return the `to' argument of a query-replace operation."
+  (query-replace-compile-replacement
+   (save-excursion
+     (read-from-minibuffer
+      (format "%s %s with: " string (query-replace-descr from))
+      nil nil nil
+      query-replace-to-history-variable from t))
+   regexp-flag))
+
 (defun query-replace-read-args (string regexp-flag &optional noerror)
   (unless noerror
     (barf-if-buffer-read-only))