]> git.eshelyaron.com Git - emacs.git/commitdiff
(move-to-window-line-last-op): New var.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 23 Nov 2009 05:32:25 +0000 (05:32 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 23 Nov 2009 05:32:25 +0000 (05:32 +0000)
(move-to-window-line-top-bottom): New command.
(global-map): Bind M-r move-to-window-line-top-bottom.

etc/NEWS
lisp/ChangeLog
lisp/window.el

index 87c11dd17a2a35912b6c65ae5b0bbc447e2f1ef9..543d66125789f48e5cdda40b8e76a42cbbe03349 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -150,6 +150,9 @@ For instance, this can complete M-x lch to list-command-history.
 ** Completions in the *Completions* buffer are sorted vertically
 when the value of the new variable `completions-format' is `vertical'.
 
+** M-r is bound to the new `move-to-window-line-top-bottom'
+to mirror the new behavior of C-l in Emacs-23.1.
+
 \f
 * Changes in Specialized Modes and Packages in Emacs 23.2
 
index 797e258b3392aca1ab149af732e33586f773023d..70a183b7764d37ac5f724ae347e350bfceb930fb 100644 (file)
@@ -1,3 +1,9 @@
+2009-11-23  Deniz Dogan  <deniz.a.m.dogan@gmail.com>  (tiny change)
+
+       * window.el (move-to-window-line-last-op): New var.
+       (move-to-window-line-top-bottom): New command.
+       (global-map): Bind M-r move-to-window-line-top-bottom.
+
 2009-11-23  Sven Joachim  <svenjoac@gmx.de>
 
        * dired-x.el (dired-guess-shell-alist-default):
index 6d32e42ef1dba0cc3349f7e54be1511631d22d50..e93d3a55d263cd28279353e0dc3986a7d0bb4ee4 100644 (file)
@@ -1652,6 +1652,39 @@ Top and bottom destinations are actually `scroll-margin' lines
             (recenter (- -1 this-scroll-margin))))))))
 
 (define-key global-map [?\C-l] 'recenter-top-bottom)
+
+(defvar move-to-window-line-last-op nil
+  "Indicates the last move-to-window-line operation performed.
+Possible values: `top', `middle', `bottom'.")
+
+(defun move-to-window-line-top-bottom (&optional arg)
+  "Position point relative to window.
+
+With an argument, acts like `move-to-window-line'.
+
+With no argument, positions point at center of window.
+Successive calls positions point at the top, the bottom and again
+at the center of the window."
+  (interactive "P")
+  (cond
+   (arg (move-to-window-line arg)) ; Always respect ARG.
+   ((or (not (eq this-command last-command))
+       (eq move-to-window-line-last-op 'bottom))
+    (setq move-to-window-line-last-op 'middle)
+    (call-interactively 'move-to-window-line))
+   (t
+    (let ((this-scroll-margin
+          (min (max 0 scroll-margin)
+               (truncate (/ (window-body-height) 4.0)))))
+      (cond ((eq move-to-window-line-last-op 'middle)
+            (setq move-to-window-line-last-op 'top)
+            (move-to-window-line this-scroll-margin))
+           ((eq move-to-window-line-last-op 'top)
+            (setq move-to-window-line-last-op 'bottom)
+            (move-to-window-line (- -1 this-scroll-margin))))))))
+
+(define-key global-map [?\M-r] 'move-to-window-line-top-bottom)
+
 \f
 (defvar mouse-autoselect-window-timer nil
   "Timer used by delayed window autoselection.")