Mercurial > hg
changeset 40253:682f73fa924a
crecord: make enter move cursor down to the next item of the same type
Let's replace experimental.spacemovesdown with a separate key: Enter, since it
wasn't used for anything in crecord. Not sure if '\n' works on Windows though.
nextsametype() strictly only moves to items of the same type as the current
item. This, for example, allows to go over individual lines in a diff and skip
hunk and file headers (which would toggle multiple lines).
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Sat, 13 Oct 2018 11:52:30 +0200 |
parents | 090e5f3900b7 |
children | dd83aafdb64a |
files | mercurial/configitems.py mercurial/crecord.py tests/test-commit-interactive-curses.t |
diffstat | 3 files changed, 24 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/configitems.py Sat Oct 13 12:58:24 2018 +0000 +++ b/mercurial/configitems.py Sat Oct 13 11:52:30 2018 +0200 @@ -616,9 +616,6 @@ coreconfigitem('experimental', 'sshserver.support-v2', default=False, ) -coreconfigitem('experimental', 'spacemovesdown', - default=False, -) coreconfigitem('experimental', 'sparse-read', default=False, )
--- a/mercurial/crecord.py Sat Oct 13 12:58:24 2018 +0000 +++ b/mercurial/crecord.py Sat Oct 13 11:52:30 2018 +0200 @@ -713,6 +713,24 @@ self.currentselecteditem = nextitem self.recenterdisplayedarea() + def nextsametype(self): + currentitem = self.currentselecteditem + sametype = lambda item: isinstance(item, type(currentitem)) + nextitem = currentitem.nextitem() + + while nextitem is not None and not sametype(nextitem): + nextitem = nextitem.nextitem() + + if nextitem is None: + nextitem = currentitem + else: + parent = nextitem.parentitem() + if parent.folded: + self.togglefolded(parent) + + self.currentselecteditem = nextitem + self.recenterdisplayedarea() + def rightarrowevent(self): """ select (if possible) the first of this item's child-items. @@ -1027,8 +1045,8 @@ def _getstatuslinesegments(self): """-> [str]. return segments""" selected = self.currentselecteditem.applied - spaceselect = _('space: select') - spacedeselect = _('space: deselect') + spaceselect = _('space/enter: select') + spacedeselect = _('space/enter: deselect') # Format the selected label into a place as long as the longer of the # two possible labels. This may vary by language. spacelen = max(len(spaceselect), len(spacedeselect)) @@ -1433,6 +1451,7 @@ the following are valid keystrokes: [space] : (un-)select item ([~]/[x] = partly/fully applied) + [enter] : (un-)select item and go to next item of same type A : (un-)select all items up/down-arrow [k/j] : go to previous/next unfolded item pgup/pgdn [K/J] : go to previous/next item of same type @@ -1686,8 +1705,9 @@ return True elif keypressed in [' '] or (test and keypressed in ["TOGGLE"]): self.toggleapply() - if self.ui.configbool('experimental', 'spacemovesdown'): - self.downarrowevent() + elif keypressed in ['\n', 'KEY_ENTER']: + self.toggleapply() + self.nextsametype() elif keypressed in ['A']: self.toggleall() elif keypressed in ['e']:
--- a/tests/test-commit-interactive-curses.t Sat Oct 13 12:58:24 2018 +0000 +++ b/tests/test-commit-interactive-curses.t Sat Oct 13 11:52:30 2018 +0200 @@ -327,24 +327,6 @@ hello world lower -Check spacemovesdown - - $ cat <<EOF >> $HGRCPATH - > [experimental] - > spacemovesdown = true - > EOF - $ cat <<EOF >testModeCommands - > TOGGLE - > TOGGLE - > X - > EOF - $ hg status -q - M b - M x - $ hg commit -i -m "nothing to commit?" -d "0 0" - no changes to record - [1] - Check ui.interface logic for the chunkselector The default interface is text