[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 14:26:26 UTC 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://lists.mercurial-scm.org/pipermail/mercurial-devel/attachments/20160920/26646d4b/attachment-0002.html>
More information about the Mercurial-devel
mailing list