"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Stefan Sperling <stsp@stsp.name>
Subject:
Re: tog: add g/G support to tree, ref views
To:
Christian Weisgerber <naddy@mips.inka.de>
Cc:
gameoftrees@openbsd.org
Date:
Fri, 3 Sep 2021 21:22:52 +0200

Download raw body.

Thread
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
> 
>