Mercurial > emacs
changeset 106325:d1953939048b
(perform-replace): Let-bind recenter-last-op to nil.
For def=recenter, replace `recenter' with `recenter-top-bottom'
that is called with `this-command' and `last-command' let-bound
to `recenter-top-bottom'. When the last `def' was not `recenter',
set `recenter-last-op' to nil. (Bug#4981)
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Mon, 30 Nov 2009 16:05:47 +0000 |
parents | 279e568f6ec1 |
children | b7dca98d92a9 |
files | lisp/ChangeLog lisp/replace.el |
diffstat | 2 files changed, 20 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Mon Nov 30 13:49:13 2009 +0000 +++ b/lisp/ChangeLog Mon Nov 30 16:05:47 2009 +0000 @@ -1,3 +1,11 @@ +2009-11-30 Juri Linkov <juri@jurta.org> + + * replace.el (perform-replace): Let-bind recenter-last-op to nil. + For def=recenter, replace `recenter' with `recenter-top-bottom' + that is called with `this-command' and `last-command' let-bound + to `recenter-top-bottom'. When the last `def' was not `recenter', + set `recenter-last-op' to nil. (Bug#4981) + 2009-11-30 Stefan Monnier <monnier@iro.umontreal.ca> Minor cleanup and simplification.
--- a/lisp/replace.el Mon Nov 30 13:49:13 2009 +0000 +++ b/lisp/replace.el Mon Nov 30 16:05:47 2009 +0000 @@ -1549,6 +1549,7 @@ (replace-count 0) (nonempty-match nil) (multi-buffer nil) + (recenter-last-op nil) ; Start cycling order with initial position. ;; If non-nil, it is marker saying where in the buffer to stop. (limit nil) @@ -1785,7 +1786,12 @@ ((eq def 'skip) (setq done t)) ((eq def 'recenter) - (recenter nil)) + ;; `this-command' has the value `query-replace', + ;; so we need to bind it to `recenter-top-bottom' + ;; to allow it to detect a sequence of `C-l'. + (let ((this-command 'recenter-top-bottom) + (last-command 'recenter-top-bottom)) + (recenter-top-bottom))) ((eq def 'edit) (let ((opos (point-marker))) (setq real-match-data (replace-match-data @@ -1839,9 +1845,12 @@ unread-command-events)) (setq done t))) (when query-replace-lazy-highlight - ;; Force lazy rehighlighting only after replacements + ;; Force lazy rehighlighting only after replacements. (if (not (memq def '(skip backup))) - (setq isearch-lazy-highlight-last-string nil)))) + (setq isearch-lazy-highlight-last-string nil))) + (unless (eq def 'recenter) + ;; Reset recenter cycling order to initial position. + (setq recenter-last-op nil))) ;; Record previous position for ^ when we move on. ;; Change markers to numbers in the match data ;; since lots of markers slow down editing.