(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.
This commit is contained in:
David Kastrup 2004-08-01 12:59:09 +00:00
parent fdeadcd1f6
commit 78629844c6
2 changed files with 33 additions and 16 deletions

View file

@ -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)

View file

@ -94,7 +94,8 @@ wants to replace FROM with TO."
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 @@ wants to replace FROM with TO."
(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 @@ wants to replace FROM with TO."
(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))