From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Deniz Dogan Newsgroups: gmane.emacs.devel Subject: Re: Suggestion to change the behavior of M-r Date: Wed, 12 Aug 2009 20:51:59 +0200 Message-ID: <7b501d5c0908121151h59753720iaf34c60f06a074af@mail.gmail.com> References: <7b501d5c0904190940x24e9412fvb26dc531b096a62d@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0015174a05765d10970470f65073 X-Trace: ger.gmane.org 1250103143 30762 80.91.229.12 (12 Aug 2009 18:52:23 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 12 Aug 2009 18:52:23 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Aug 12 20:52:16 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MbIvo-0002iS-51 for ged-emacs-devel@m.gmane.org; Wed, 12 Aug 2009 20:52:16 +0200 Original-Received: from localhost ([127.0.0.1]:49949 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MbIvl-0003EU-HM for ged-emacs-devel@m.gmane.org; Wed, 12 Aug 2009 14:52:13 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MbIve-0003B4-SV for emacs-devel@gnu.org; Wed, 12 Aug 2009 14:52:06 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MbIvZ-0002zo-VJ for emacs-devel@gnu.org; Wed, 12 Aug 2009 14:52:06 -0400 Original-Received: from [199.232.76.173] (port=33285 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MbIvZ-0002zR-Kk for emacs-devel@gnu.org; Wed, 12 Aug 2009 14:52:01 -0400 Original-Received: from mail-ew0-f207.google.com ([209.85.219.207]:46510) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MbIvZ-00038Q-30 for emacs-devel@gnu.org; Wed, 12 Aug 2009 14:52:01 -0400 Original-Received: by ewy3 with SMTP id 3so313554ewy.42 for ; Wed, 12 Aug 2009 11:51:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=oSJK6iFNj32+kO2hmoi8weTXnbjvgrBIfvHNHODxmjQ=; b=fpYwMPSlZdPT1AnQTgpEU/sD3XDvqRyQtRK3vfli8R3WXNTrLj+//g6zEYAQTRLDZz Td6Dwn9RyV7YTh5RhLG9yqrKX+sLj2x/YunY0IxmZZ4RZEept6u7r4349MitiKUkZt7m GEeKh0q74QYAJSpHoypio8Hos8jpOL8+cZgaI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=CMEo8hoj6N5OtcABc3MewPDQU3xEVKB/mATfysmIUUAK4kMGUAGGM2mJ11NjYJGL/8 urU4G6GFLHUzHfzsMDp7sqvpqNkjXW9BlwQ/JT+C1/V0qAKj31Hu+LJzu1BiM4gfk0nC M3/CYpk5C583YARcL1CSuO7i/LuDSGHimwELY= Original-Received: by 10.210.104.8 with SMTP id b8mr401820ebc.56.1250103119384; Wed, 12 Aug 2009 11:51:59 -0700 (PDT) In-Reply-To: <7b501d5c0904190940x24e9412fvb26dc531b096a62d@mail.gmail.com> X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:114151 Archived-At: --0015174a05765d10970470f65073 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 2009/4/19 Deniz Dogan : > Hi > > I recently found out about the M-r keybinding, which by default is > bound to move-to-window-line. Already knowing about the C-l keybinding > (recenter-top-bottom) I was a bit thrown off when I found out that M-r > doesn't behave in the same way. This got me thinking that the behavior > of M-r should be changed to behave somewhat like C-l. So I basically > stole the code for recenter-top-bottom and modified it to work with > move-to-window-line instead. > > This is the result: > > (defvar move-to-window-line-last-op nil > =A0"Indicates the last move-to-window-line operation performed. > Possible values: `top', `middle', `bottom'.") > > (defun move-to-window-line-top-bottom (&optional arg) > =A0(interactive "P") > =A0(cond > =A0 (arg (move-to-window-line arg)) =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0; Always respect ARG. > =A0 ((or (not (eq this-command last-command)) =A0 =A0 =A0 =A0 =A0 =A0; If= this is > not a repetition > =A0 =A0 =A0 =A0(eq move-to-window-line-last-op 'bottom)) =A0 =A0 =A0 ; or= if the last one > put us at the bottom > =A0 =A0(setq move-to-window-line-last-op 'middle) =A0 =A0 =A0 =A0 =A0; th= en move it > to the middle > =A0 =A0(call-interactively 'move-to-window-line)) > =A0 (t > =A0 =A0(let ((this-scroll-margin > =A0 =A0 =A0 =A0 =A0 (min (max 0 scroll-margin) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(truncate (/ (window-body-height) 4.0))))) > =A0 =A0 =A0(cond ((eq move-to-window-line-last-op 'middle) =A0 ; If we're= at the middle > =A0 =A0 =A0 =A0 =A0 =A0 (setq move-to-window-line-last-op 'top) =A0 =A0; = then move to the top > =A0 =A0 =A0 =A0 =A0 =A0 (move-to-window-line this-scroll-margin)) > =A0 =A0 =A0 =A0 =A0 =A0((eq move-to-window-line-last-op 'top) =A0 =A0 =A0= ; If we're at the top > =A0 =A0 =A0 =A0 =A0 =A0 (setq move-to-window-line-last-op 'bottom) ; then= move to the bottom > =A0 =A0 =A0 =A0 =A0 =A0 (move-to-window-line (- -1 this-scroll-margin))))= )))) > > Please, do consider changing the behavior of M-r, of course not > necessarily using the code above. If the code became a bit obfuscated > on its way to the mailing list, I pasted it on lisp.org as well: > http://paste.lisp.org/display/78841 > > Thanks, > Deniz Dogan > I'm guessing that no one is interested after all, but for convenience I tried compiling a couple of patches for this change: one which adds this functionality to lisp/window.el (and also binds it to M-r) and one which updates etc/NEWS if it needs to be documented there. --=20 Deniz Dogan --0015174a05765d10970470f65073 Content-Type: application/octet-stream; name="move-to-window-line-top-bottom.patch" Content-Disposition: attachment; filename="move-to-window-line-top-bottom.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fyaf31pa0 KioqIGxpc3Avd2luZG93LmVsCTcgTWF5IDIwMDkgMDk6MjE6MzEgLTAwMDAJMS4xODAKLS0tIGxp c3Avd2luZG93LmVsCTEyIEF1ZyAyMDA5IDE4OjQ3OjA5IC0wMDAwCioqKioqKioqKioqKioqKiBU b3AgYW5kIGJvdHRvbSBkZXN0aW5hdGlvbnMgYXJlIGFjdHVhbGx5CioqKiAxNjMxLDE2MzYgKioq KgotLS0gMTYzMSwxNjY5IC0tLS0KICAJICAgICAocmVjZW50ZXIgKC0gLTEgdGhpcy1zY3JvbGwt bWFyZ2luKSkpKSkpKSkKICAKICAoZGVmaW5lLWtleSBnbG9iYWwtbWFwIFs/XEMtbF0gJ3JlY2Vu dGVyLXRvcC1ib3R0b20pCisgCisgKGRlZnZhciBtb3ZlLXRvLXdpbmRvdy1saW5lLWxhc3Qtb3Ag bmlsCisgICAiSW5kaWNhdGVzIHRoZSBsYXN0IG1vdmUtdG8td2luZG93LWxpbmUgb3BlcmF0aW9u IHBlcmZvcm1lZC4KKyBQb3NzaWJsZSB2YWx1ZXM6IGB0b3AnLCBgbWlkZGxlJywgYGJvdHRvbScu IikKKyAKKyAoZGVmdW4gbW92ZS10by13aW5kb3ctbGluZS10b3AtYm90dG9tICgmb3B0aW9uYWwg YXJnKQorICAgIlBvc2l0aW9uIHBvaW50IHJlbGF0aXZlIHRvIHdpbmRvdy4KKyAKKyBXaXRoIGFu IGFyZ3VtZW50LCBhY3RzIGxpa2UgYG1vdmUtdG8td2luZG93LWxpbmUnLgorIAorIFdpdGggbm8g YXJndW1lbnQsIHBvc2l0aW9ucyBwb2ludCBhdCBjZW50ZXIgb2Ygd2luZG93LgorIFN1Y2Nlc3Np dmUgY2FsbHMgcG9zaXRpb25zIHBvaW50IGF0IHRoZSB0b3AsIHRoZSBib3R0b20gYW5kIGFnYWlu CisgYXQgdGhlIGNlbnRlciBvZiB0aGUgd2luZG93LiIKKyAgIChpbnRlcmFjdGl2ZSAiUCIpCisg ICAoY29uZAorICAgIChhcmcgKG1vdmUtdG8td2luZG93LWxpbmUgYXJnKSkgOyBBbHdheXMgcmVz cGVjdCBBUkcuCisgICAgKChvciAobm90IChlcSB0aGlzLWNvbW1hbmQgbGFzdC1jb21tYW5kKSkK KyAJKGVxIG1vdmUtdG8td2luZG93LWxpbmUtbGFzdC1vcCAnYm90dG9tKSkKKyAgICAgKHNldHEg bW92ZS10by13aW5kb3ctbGluZS1sYXN0LW9wICdtaWRkbGUpCisgICAgIChjYWxsLWludGVyYWN0 aXZlbHkgJ21vdmUtdG8td2luZG93LWxpbmUpKQorICAgICh0CisgICAgIChsZXQgKCh0aGlzLXNj cm9sbC1tYXJnaW4KKyAJICAgKG1pbiAobWF4IDAgc2Nyb2xsLW1hcmdpbikKKyAJCSh0cnVuY2F0 ZSAoLyAod2luZG93LWJvZHktaGVpZ2h0KSA0LjApKSkpKQorICAgICAgIChjb25kICgoZXEgbW92 ZS10by13aW5kb3ctbGluZS1sYXN0LW9wICdtaWRkbGUpCisgCSAgICAgKHNldHEgbW92ZS10by13 aW5kb3ctbGluZS1sYXN0LW9wICd0b3ApCisgCSAgICAgKG1vdmUtdG8td2luZG93LWxpbmUgdGhp cy1zY3JvbGwtbWFyZ2luKSkKKyAJICAgICgoZXEgbW92ZS10by13aW5kb3ctbGluZS1sYXN0LW9w ICd0b3ApCisgCSAgICAgKHNldHEgbW92ZS10by13aW5kb3ctbGluZS1sYXN0LW9wICdib3R0b20p CisgCSAgICAgKG1vdmUtdG8td2luZG93LWxpbmUgKC0gLTEgdGhpcy1zY3JvbGwtbWFyZ2luKSkp KSkpKSkKKyAKKyAoZGVmaW5lLWtleSBnbG9iYWwtbWFwIFs/XE0tcl0gJ21vdmUtdG8td2luZG93 LWxpbmUtdG9wLWJvdHRvbSkKKyAKICAMCiAgKGRlZnZhciBtb3VzZS1hdXRvc2VsZWN0LXdpbmRv dy10aW1lciBuaWwKICAgICJUaW1lciB1c2VkIGJ5IGRlbGF5ZWQgd2luZG93IGF1dG9zZWxlY3Rp b24uIikK --0015174a05765d10970470f65073 Content-Type: application/octet-stream; name="move-to-window-line-top-bottom-NEWS.patch" Content-Disposition: attachment; filename="move-to-window-line-top-bottom-NEWS.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fyaf39p51 KioqIGV0Yy9ORVdTCTggQXVnIDIwMDkgMTk6MDE6MjYgLTAwMDAJMS4yMDU5Ci0tLSBldGMvTkVX UwkxMiBBdWcgMjAwOSAxODo0ODoyNyAtMDAwMAoqKioqKioqKioqKioqKiogdmFyaWFibGVzIHRv IGZpbGUtbG9jYWwgdmFyaWFibGVzIGluIHRoZQoqKiogOTMsOTggKioqKgotLS0gOTMsMTAxIC0t LS0KICArKysKICAqKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYGJsaW5rLW1hdGNoaW5nLXBhcmVu LWRpc3RhbmNlJyBoYXMgYmVlbiBpbmNyZWFzZWQuCiAgCisgLS0tCisgKiogTS1yIGlzIG5vdyBi b3VuZCB0byBgbW92ZS10by13aW5kb3ctbGluZS10b3AtYm90dG9tJyBieSBkZWZhdWx0LgorIAog IAwKICAqIENoYW5nZXMgaW4gU3BlY2lhbGl6ZWQgTW9kZXMgYW5kIFBhY2thZ2VzIGluIEVtYWNz IDIzLjIKICAK --0015174a05765d10970470f65073--