Mercurial > emacs
changeset 106199:eaae8a5d935f
(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.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Mon, 23 Nov 2009 05:32:25 +0000 |
parents | 97b90713fd52 |
children | 34a3dd721f80 |
files | etc/NEWS lisp/ChangeLog lisp/window.el |
diffstat | 3 files changed, 42 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/etc/NEWS Mon Nov 23 00:32:37 2009 +0000 +++ b/etc/NEWS Mon Nov 23 05:32:25 2009 +0000 @@ -150,6 +150,9 @@ ** 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. + * Changes in Specialized Modes and Packages in Emacs 23.2
--- a/lisp/ChangeLog Mon Nov 23 00:32:37 2009 +0000 +++ b/lisp/ChangeLog Mon Nov 23 05:32:25 2009 +0000 @@ -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):
--- a/lisp/window.el Mon Nov 23 00:32:37 2009 +0000 +++ b/lisp/window.el Mon Nov 23 05:32:25 2009 +0000 @@ -1652,6 +1652,39 @@ (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) + (defvar mouse-autoselect-window-timer nil "Timer used by delayed window autoselection.")