[PATCH 2 of 2 v3] crecord: add an event that scrolls the selected line to the top of the screen

Nathan Goldbaum nathan12343 at gmail.com
Tue Sep 20 10:26:26 EDT 2016


On Tuesday, September 20, 2016, Pierre-Yves David <
pierre-yves.david at ens-lyon.org> wrote:

>
>
> On 09/20/2016 12:23 AM, Nathan Goldbaum wrote:
>
>> # HG changeset patch
>> # User Nathan Goldbaum <ngoldbau at illinois.edu>
>> # Date 1474321033 18000
>> #      Mon Sep 19 16:37:13 2016 -0500
>> # Node ID 94afc22065e475ab1a61f68012be44f6dbbd0d64
>> # Parent  285a8c3e53f2183438f0cdbc238e4ab851d0d110
>> crecord: add an event that scrolls the selected line to the top of the
>> screen
>>
>> Using ctrl-l for this purpose seems to be a fairly widely used practice,
>> presumably following emacs. This doesn't scroll the selected line all
>> the way to the top of the window, instead it leaves a 3 line buffer for
>> context. Use curses.unctrl() to resolve keypressed to '^L' to avoid
>> hard-coding hexadecimal key codes.
>>
>> diff -r 285a8c3e53f2 -r 94afc22065e4 mercurial/crecord.py
>> --- a/mercurial/crecord.py      Tue May 03 13:36:12 2016 +0900
>> +++ b/mercurial/crecord.py      Mon Sep 19 16:37:13 2016 -0500
>> @@ -715,6 +715,10 @@ class curseschunkselector(object):
>>
>>          self.currentselecteditem = currentitem
>>
>> +    def topscroll(self):
>> +        "scroll so the currently selected line is at the top of the
>> screen"
>> +        self.scrolllines(self.selecteditemstartline)
>> +
>>      def updatescroll(self):
>>          "scroll the screen to fully show the currently-selected"
>>          selstart = self.selecteditemstartline
>> @@ -1338,6 +1342,7 @@ the following are valid keystrokes:
>>   shift-left-arrow   [H] : go to parent header / fold selected header
>>                        f : fold / unfold item, hiding/revealing its
>> children
>>                        F : fold / unfold parent item and all of its
>> ancestors
>> +                 ctrl-l : scroll the selected line to the top of the
>> screen
>>                        m : edit / resume editing the commit message
>>                        e : edit the currently selected hunk
>>                        a : toggle amend mode, only with commit -i
>> @@ -1582,6 +1587,8 @@ are you sure you want to review/edit and
>>              self.helpwindow()
>>              self.stdscr.clear()
>>              self.stdscr.refresh()
>> +        elif curses.unctrl(keypressed) in ["^L"]:
>> +            self.topscroll()
>>
>
> any reason why we use 'in' instead of "==" here?


Following the other branches of the if/elif block in this function.


>
> Also, I'm not sure if the 'topscroll' method is that useful as it a
> one-liner. Should just call that code in the if clause?


Sure, I can send a v5


>
> Cheers,
>
> --
> Pierre-Yves David
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20160920/26646d4b/attachment.html>


More information about the Mercurial-devel mailing list