all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: improving query-replace and query-replace-regexp
Date: 28 May 2004 18:20:49 -0400	[thread overview]
Message-ID: <jwvk6ywfbf6.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <20040528.182035.197345599.wl@gnu.org>

> What do you think of making M-% and C-M-% b behave similar to C-s and
> C-u C-s?  This is, typing it a second time continues a previous
> query-and-replace action.  This would save a lot of time.

After a M-%, you should already be able to continue the same query-replace
action with: M-% RET

At least it works here.......[checking whether it's a local hack that
I haven't installed yet].......hmmm...indeed, it's a local hack.
See patch below,


        Stefan


--- orig/lisp/replace.el
+++ mod/lisp/replace.el
@@ -67,17 +67,28 @@
 (defun query-replace-read-args (string regexp-flag &optional noerror)
   (unless noerror
     (barf-if-buffer-read-only))
-  (let (from to)
+  (let ((lastfrom (car (symbol-value query-replace-from-history-variable)))
+	(lastto (car (symbol-value query-replace-to-history-variable)))
+	from to)
     (if query-replace-interactive
 	(setq from (car (if regexp-flag regexp-search-ring search-ring)))
+      (if (equal lastfrom lastto)
+	  ;; Typically, this is because the two histlists are shared.
+	  (setq lastfrom
+		(cadr (symbol-value query-replace-from-history-variable))))
       ;; 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)
+	(setq from (read-from-minibuffer (if (null lastto)
+					     (format "%s: " string)
+					   (format "%s [%s -> %s]: " string
+						   lastfrom lastto))
 					 nil nil nil
 					 query-replace-from-history-variable
 					 nil t)))
+      (if (and lastto (zerop (length from)))
+	  (setq from lastfrom to lastto)
       ;; Warn if user types \n or \t, but don't reject the input.
       (if (string-match "\\\\[nt]" from)
 	  (let ((match (match-string 0 from)))
@@ -86,12 +97,13 @@
 	      (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))))
+	      (sit-for 2)))))
 
+    (unless to
     (save-excursion
       (setq to (read-from-minibuffer (format "%s %s with: " string from)
 				     nil nil nil
-				     query-replace-to-history-variable from t)))
+				       query-replace-to-history-variable from t))))
     (list from to current-prefix-arg)))
 
 (defun query-replace (from-string to-string &optional delimited start end)

  reply	other threads:[~2004-05-28 22:20 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-28 16:20 improving query-replace and query-replace-regexp Werner LEMBERG
2004-05-28 22:20 ` Stefan Monnier [this message]
2004-05-29 17:02   ` Richard Stallman
2004-05-29 17:05     ` Werner LEMBERG
2004-05-29 17:50       ` Miles Bader
2004-05-29 20:45         ` Werner LEMBERG
2004-05-29 21:15     ` Juri Linkov
2004-05-29 21:31       ` Miles Bader
2004-05-30 20:59         ` Juri Linkov
2004-06-01 23:48           ` Stefan Monnier
     [not found]             ` < 8765aadbgb.fsf@mail.jurta.org>
2004-06-02  0:04             ` Miles Bader
2004-06-02  0:10               ` Stefan Monnier
2004-06-02  0:17                 ` Miles Bader
2004-06-02 17:37                 ` Richard Stallman
2004-06-02 17:37               ` Richard Stallman
2004-06-02  0:56             ` Juri Linkov
2004-06-02  1:48               ` Miles Bader
2004-06-02  1:58                 ` minibuffer-eldef (was: improving query-replace and query-replace-regexp) Stefan Monnier
2004-06-02  2:15                   ` minibuffer-eldef Miles Bader
2004-06-02  3:25                     ` minibuffer-eldef Stefan Monnier
2004-06-02  3:42                       ` minibuffer-eldef Miles Bader
2004-06-02  7:01                         ` minibuffer-eldef David Kastrup
2004-06-02  7:15                           ` minibuffer-eldef Miles Bader
2004-06-02 22:55                             ` minibuffer-eldef Richard Stallman
2004-06-03  7:19                               ` minibuffer-eldef David Kastrup
2004-06-03  7:34                                 ` minibuffer-eldef Miles Bader
2004-06-03  8:13                                   ` minibuffer-eldef David Kastrup
2004-06-03 22:40                                     ` minibuffer-eldef Miles Bader
2004-06-03  7:39                                 ` minibuffer-eldef Stephan Stahl
2004-06-03  8:06                                   ` minibuffer-eldef David Kastrup
2004-06-03  8:43                                     ` minibuffer-eldef Stephan Stahl
2004-06-03 12:21                                 ` minibuffer-eldef Stefan Monnier
2004-06-03 12:35                                   ` minibuffer-eldef David Kastrup
2004-06-04  1:35                                 ` minibuffer-eldef Juri Linkov
2004-06-02  8:04                       ` minibuffer-eldef Kim F. Storm
2004-06-02  9:50                         ` minibuffer-eldef Miles Bader
2004-06-02  8:32                       ` minibuffer-eldef Werner LEMBERG
2004-06-02 17:37                 ` improving query-replace and query-replace-regexp Richard Stallman
2004-06-02 17:52                   ` David Kastrup
2004-06-03  1:28                   ` Miles Bader
2004-06-03  2:29                     ` Stefan Monnier
2004-06-03  4:52                       ` Miles Bader
2004-06-03  7:22                     ` David Kastrup
2004-06-04  2:03                       ` Richard Stallman
2004-06-07  4:28                         ` Miles Bader
2004-06-02  0:16         ` Kevin Rodgers
2004-06-02  0:32           ` Miles Bader
2004-06-03 18:35             ` Kevin Rodgers
2004-06-03 18:57               ` Stefan Monnier
2004-06-03 22:20                 ` Miles Bader
2004-06-04 17:33                   ` Richard Stallman
2004-06-02  0:59           ` Juri Linkov
2004-07-03  9:45   ` Juri Linkov
2004-07-04 17:03     ` Richard Stallman
2004-07-05 19:43       ` David Kastrup
2004-05-29 10:57 ` Miles Bader
2004-05-29 11:58   ` Kai Grossjohann
2004-05-29 12:03     ` Miles Bader
2004-05-30 14:30       ` Richard Stallman
2004-05-29 12:21     ` Werner LEMBERG
2004-05-29 15:51 ` Stefan Daschek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwvk6ywfbf6.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.