Download raw body.
tog: add g/G support to tree, ref views
On Fri, Sep 03, 2021 at 08:27:35PM +0200, Christian Weisgerber wrote:
> tog: add support for navigating to first/last line of tree and ref views
>
> OK?
ok stsp
Thank you!
> diff refs/heads/main refs/heads/home+end
> blob - e1460641f9ff41fe9c556f72f3433b6b500e9dc9
> blob + 6782772927c2e0682e87d5728b008b4502aff17b
> --- tog/tog.1
> +++ tog/tog.1
> @@ -365,6 +365,10 @@ Move the selection cursor up.
> Move the selection cursor down one page.
> .It Cm Page-up, Ctrl+b
> Move the selection cursor up one page.
> +.It Cm Home, g
> +Move the selection cursor to the first entry.
> +.It Cm End, G
> +Move the selection cursor to the last entry.
> .It Cm Enter
> Enter the currently selected directory, or switch to the
> .Cm blame
> @@ -431,6 +435,10 @@ Move the selection cursor up.
> Move the selection cursor down one page.
> .It Cm Page-up, Ctrl+b
> Move the selection cursor up one page.
> +.It Cm Home, g
> +Move the selection cursor to the first reference.
> +.It Cm End, G
> +Move the selection cursor to the last reference.
> .It Cm Enter
> Open a
> .Cm log
> blob - 676aa5bfd38d46389ada9f6d333fc7b1eab64913
> blob + 6571f119993519e742623ae6d665fcc1cc098ad3
> --- tog/tog.c
> +++ tog/tog.c
> @@ -5396,7 +5396,8 @@ input_tree_view(struct tog_view **new_view, struct tog
> const struct got_error *err = NULL;
> struct tog_tree_view_state *s = &view->state.tree;
> struct tog_view *log_view, *ref_view;
> - int begin_x = 0;
> + struct got_tree_entry *te;
> + int begin_x = 0, n;
>
> switch (ch) {
> case 'i':
> @@ -5442,6 +5443,33 @@ input_tree_view(struct tog_view **new_view, struct tog
> } else
> *new_view = ref_view;
> break;
> + case 'g':
> + case KEY_HOME:
> + s->selected = 0;
> + if (s->tree == s->root)
> + s->first_displayed_entry =
> + got_object_tree_get_first_entry(s->tree);
> + else
> + s->first_displayed_entry = NULL;
> + break;
> + case 'G':
> + case KEY_END:
> + s->selected = 0;
> + te = got_object_tree_get_last_entry(s->tree);
> + for (n = 0; n < view->nlines - 3; n++) {
> + if (te == NULL) {
> + if(s->tree != s->root) {
> + s->first_displayed_entry = NULL;
> + n++;
> + }
> + break;
> + }
> + s->first_displayed_entry = te;
> + te = got_tree_entry_get_prev(s->tree, te);
> + }
> + if (n > 0)
> + s->selected = n - 1;
> + break;
> case 'k':
> case KEY_UP:
> if (s->selected > 0) {
> @@ -6158,7 +6186,8 @@ input_ref_view(struct tog_view **new_view, struct tog_
> const struct got_error *err = NULL;
> struct tog_ref_view_state *s = &view->state.ref;
> struct tog_view *log_view, *tree_view;
> - int begin_x = 0;
> + struct tog_reflist_entry *re;
> + int begin_x = 0, n;
>
> switch (ch) {
> case 'i':
> @@ -6203,6 +6232,24 @@ input_ref_view(struct tog_view **new_view, struct tog_
> } else
> *new_view = tree_view;
> break;
> + case 'g':
> + case KEY_HOME:
> + s->selected = 0;
> + s->first_displayed_entry = TAILQ_FIRST(&s->refs);
> + break;
> + case 'G':
> + case KEY_END:
> + s->selected = 0;
> + re = TAILQ_LAST(&s->refs, tog_reflist_head);
> + for (n = 0; n < view->nlines - 1; n++) {
> + if (re == NULL)
> + break;
> + s->first_displayed_entry = re;
> + re = TAILQ_PREV(re, tog_reflist_head, entry);
> + }
> + if (n > 0)
> + s->selected = n - 1;
> + break;
> case 'k':
> case KEY_UP:
> if (s->selected > 0) {
> --
> Christian "naddy" Weisgerber naddy@mips.inka.de
>
>
tog: add g/G support to tree, ref views