arun updated this revision to Diff 14621. REPOSITORY rHG Mercurial
CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D6178?vs=14620&id=14621 REVISION DETAIL https://phab.mercurial-scm.org/D6178 AFFECTED FILES mercurial/crecord.py CHANGE DETAILS diff --git a/mercurial/crecord.py b/mercurial/crecord.py --- a/mercurial/crecord.py +++ b/mercurial/crecord.py @@ -1467,6 +1467,8 @@ pgup/pgdn [K/J] : go to previous/next item of same type right/left-arrow [l/h] : go to child item / parent item shift-left-arrow [H] : go to parent header / fold selected header + g : go to the top + G : go to the bottom 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 @@ -1505,6 +1507,45 @@ self.stdscr.refresh() self.stdscr.keypad(1) # allow arrow-keys to continue to function + def handlefirstlineevent(self): + """ + Handle 'g' to navigate to the top most file in the ncurses window. + """ + self.currentselecteditem = self.headerlist[0] + currentitem = self.currentselecteditem + # select the parent item recursively until we're at a header + while True: + nextitem = currentitem.parentitem() + if nextitem is None: + break + else: + currentitem = nextitem + + self.currentselecteditem = currentitem + + def handlelastlineevent(self): + """ + Handle 'G' to navigate to the bottom most file/hunk/line depending + on the whether the fold is active or not. + + If the bottom most file is folded, it navigates to that file and stops there. + If the bottom most file is unfolded, it navigates to the bottom most hunk in + that file and stops there. If the bottom most hunk is unfolded, it navigates to + the bottom most line in that hunk. + """ + currentitem = self.currentselecteditem + nextitem = currentitem.nextitem() + # select the child item recursively until we're at a footer + while nextitem is not None: + nextitem = currentitem.nextitem() + if nextitem is None: + break + else: + currentitem = nextitem + + self.currentselecteditem = currentitem + self.recenterdisplayedarea() + def confirmationwindow(self, windowtext): "display an informational window, then wait for and return a keypress." @@ -1725,6 +1766,10 @@ self.togglefolded(foldparent=True) elif keypressed in ["m"]: self.commitMessageWindow() + elif keypressed in ["g"]: + self.handlefirstlineevent() + elif keypressed in ["G"]: + self.handlelastlineevent() elif keypressed in ["?"]: self.helpwindow() self.stdscr.clear() To: arun, #hg-reviewers Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel