diff lisp/replace.el @ 5686:c6b1500299a7

recenter-top-bottom synced from GNU and new default for C-l Partial implementation of recenter-top-bottom. GNU has support for scroll-margin that is not in XEmacs so that is left out. lisp/ChangeLog: 2012-09-18 Mats Lidell <matsl@xemacs.org> * window-xemacs.el (recenter-positions): New defcustom. (recenter-top-bottom): New command. (recenter-last-op): New defvar. * 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. * keydefs.el (global-map): Make recenter-top-bottom new default for C-l. etc/ChangeLog: 2012-09-18 Mats Lidell <matsl@xemacs.org> * TUTORIAL: Updated due to recenter-top-bottom man/ChangeLog: 2012-09-18 Mats Lidell <matsl@xemacs.org> * lispref/windows.texi (Vertical Scrolling): Added recenter-top-bottom and recenter-positions * xemacs/display.texi (Display): Rearranged and added documentation due to new function recenter-top-bottom.
author Mats Lidell <mats.lidell@cag.se>
date Tue, 18 Sep 2012 08:58:28 +0200
parents ac37a5f7e5be
children 0bddb59072b6
line wrap: on
line diff
--- a/lisp/replace.el	Sun Sep 16 21:43:21 2012 +0100
+++ b/lisp/replace.el	Tue Sep 18 08:58:28 2012 +0200
@@ -1,6 +1,6 @@
 ;;; replace.el --- search and replace commands for XEmacs.
 
-;; Copyright (C) 1985-7, 1992, 1994, 1997, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1985-7, 1992, 1994, 1997, 2003, 2012 Free Software Foundation, Inc.
 
 ;; Maintainer: XEmacs Development Team
 ;; Keywords: dumped, matching
@@ -559,6 +559,7 @@
 	 ;; stop.
 	 (limit nil)
 	 (match-again t)
+	 (recenter-last-op nil) ; Start cycling order with initial position.
 	 ;; XEmacs addition
 	 (qr-case-fold-search
 	  (if (and case-fold-search search-caps-disable-folding)
@@ -700,7 +701,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)
 		       (store-match-data
 			(prog1 (match-data)
@@ -724,6 +730,9 @@
 		       (setq unread-command-events
 			     (cons event unread-command-events))
 		       (setq done t))))
+	      (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.