From: Tracey Emery Subject: Re: tog: handle Home/End for log and diff views To: Christian Weisgerber Cc: gameoftrees@openbsd.org, Jasper Lievisse Adriaanse Date: Fri, 3 Sep 2021 14:14:46 -0600 On Fri, Sep 03, 2021 at 09:55:15PM +0200, Christian Weisgerber wrote: > Jasper Lievisse Adriaanse: > > > Here's a diff that allows one to quickly navigate to the first or last > > item of a particular view. Currently I've implemented it for the diff and > > log views as these are the ones I use most often. > > > diff --git a/tog/tog.1 b/tog/tog.1 > > Heresy!! > > > --- a/tog/tog.c > > +++ b/tog/tog.c > > @@ -2406,6 +2406,14 @@ input_log_view(struct tog_view **new_view, struct tog_view *view, int ch) > > log_scroll_up(s, 1); > > select_commit(s); > > break; > > + case KEY_HOME: > > + if (s->first_displayed_entry == NULL) > > + break; > > + > > + s->selected = 0; > > + log_scroll_up(s, s->commits.ncommits); > > + select_commit(s); > > + break; > > case KEY_PPAGE: > > case CTRL('b'): > > if (s->first_displayed_entry == NULL) > > We can directly go to the head of the list, we don't need to traverse > it backwards. > > diff refs/heads/main refs/heads/tweak > blob - 676aa5bfd38d46389ada9f6d333fc7b1eab64913 > blob + 026ea0f67b5944ff6c2f0bdd37d49b8d84fcca4c > --- tog/tog.c > +++ tog/tog.c > @@ -2420,11 +2420,8 @@ input_log_view(struct tog_view **new_view, struct tog_ > break; > case 'g': > case KEY_HOME: > - if (s->first_displayed_entry == NULL) > - break; > - > s->selected = 0; > - log_scroll_up(s, s->commits.ncommits); > + s->first_displayed_entry = TAILQ_FIRST(&s->commits.head); > select_commit(s); > break; > case KEY_PPAGE: > -- > Christian "naddy" Weisgerber naddy@mips.inka.de Yup, ok. -- Tracey Emery