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)
next prev parent 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.