summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/replace.el53
1 files changed, 31 insertions, 22 deletions
diff --git a/lisp/replace.el b/lisp/replace.el
index 2d3e1f40a31..380dd83c87e 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -64,21 +64,20 @@ strings or patterns."
:group 'matching
:version "21.4")
-(defun query-replace-read-args (string regexp-flag &optional noerror)
- (unless noerror
- (barf-if-buffer-read-only))
- (let (from to)
- (if query-replace-interactive
- (setq from (car (if regexp-flag regexp-search-ring search-ring)))
- ;; The save-excursion here is in case the user marks and copies
- ;; a region in order to specify the minibuffer input.
- ;; That should not clobber the region for the query-replace itself.
- (save-excursion
- (setq from (read-from-minibuffer
- (format "%s: " string)
- nil nil nil
- query-replace-from-history-variable
- nil t)))
+(defun query-replace-read-from (string regexp-flag)
+ "Query and return the `from' argument of a query-replace operation."
+ (if query-replace-interactive
+ (car (if regexp-flag regexp-search-ring search-ring))
+ (let* ((from
+ ;; The save-excursion here is in case the user marks and copies
+ ;; a region in order to specify the minibuffer input.
+ ;; That should not clobber the region for the query-replace itself.
+ (save-excursion
+ (read-from-minibuffer
+ (format "%s: " string)
+ nil nil nil
+ query-replace-from-history-variable
+ nil t))))
;; Warn if user types \n or \t, but don't reject the input.
(and regexp-flag
(string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\[nt]\\)" from)
@@ -88,13 +87,16 @@ strings or patterns."
(message "Note: `\\n' here doesn't match a newline; to do that, type C-q C-j instead"))
((string= match "\\t")
(message "Note: `\\t' here doesn't match a tab; to do that, just type TAB")))
- (sit-for 2))))
-
- (save-excursion
- (setq to (read-from-minibuffer
- (format "%s %s with: " string from)
- nil nil nil
- query-replace-to-history-variable from t)))
+ (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 from)
+ nil nil nil
+ query-replace-to-history-variable from t))))
(when (and regexp-flag
(string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\\\[,#]" to))
(let (pos list char)
@@ -129,6 +131,13 @@ strings or patterns."
(if (> (length to) 1)
(cons 'concat to)
(car to)))))
+ to))
+
+(defun query-replace-read-args (string regexp-flag &optional noerror)
+ (unless noerror
+ (barf-if-buffer-read-only))
+ (let* ((from (query-replace-read-from string regexp-flag))
+ (to (query-replace-read-to from string regexp-flag)))
(list from to current-prefix-arg)))
(defun query-replace (from-string to-string &optional delimited start end)