+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.
(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)
((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
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.