imove to the prev/next header with Alt + n/p - iomenu - interactive terminal-based selection menu Err bitreich.org 70 hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu bitreich.org 70 1Log /scm/iomenu/log.gph bitreich.org 70 1Files /scm/iomenu/files.gph bitreich.org 70 1Refs /scm/iomenu/refs.gph bitreich.org 70 1Tags /scm/iomenu/tag bitreich.org 70 1README /scm/iomenu/file/README.gph bitreich.org 70 1LICENSE /scm/iomenu/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit e72aa011e805f26becc50b68673bad057a743c39 /scm/iomenu/commit/e72aa011e805f26becc50b68673bad057a743c39.gph bitreich.org 70 1parent 49b2a2f664d47cd98352daf4068933ae56633cf7 /scm/iomenu/commit/49b2a2f664d47cd98352daf4068933ae56633cf7.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:mail@josuah.net bitreich.org 70 iDate: Sat, 5 May 2018 23:03:27 +0200 Err bitreich.org 70 i Err bitreich.org 70 imove to the prev/next header with Alt + n/p Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M iomenu.1 | 5 ++++- Err bitreich.org 70 i M iomenu.c | 34 +++++++++++++++++++++++++++---- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 34 insertions(+), 5 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/iomenu.1 b/iomenu.1 /scm/iomenu/file/iomenu.1.gph bitreich.org 70 i@@ -40,11 +40,14 @@ An active selection is highlighted, and can be controlled with keybindings. Err bitreich.org 70 i As printable keys are entered, the lines are filtered to match each Err bitreich.org 70 i word from the input. Err bitreich.org 70 i . Err bitreich.org 70 i-.Bl -tag -width XXXXXXXXXXXXXXX Err bitreich.org 70 i+.Bl -tag -width 6n Err bitreich.org 70 i . Err bitreich.org 70 i .It Ic Up Ns , Ic Down Ns , Ic Ctrl + p Ns , Ic Ctrl + n Err bitreich.org 70 i Move selection to the previous/next item. Err bitreich.org 70 i . Err bitreich.org 70 i+.It Ic Alt + p Ns , Ic Alt + n Err bitreich.org 70 i+Move selection to the previous/next header. Err bitreich.org 70 i+. Err bitreich.org 70 i .It Ic PageUp Ns , Ic PageDown Ns , Ic Alt + v Ns , Ic Ctrl + v Err bitreich.org 70 i Move one page up or down. Err bitreich.org 70 i . Err bitreich.org 70 1diff --git a/iomenu.c b/iomenu.c /scm/iomenu/file/iomenu.c.gph bitreich.org 70 i@@ -124,15 +124,15 @@ read_stdin(void) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i-move(int direction) Err bitreich.org 70 i+move(int sign) Err bitreich.org 70 i { Err bitreich.org 70 i extern char **matchv; Err bitreich.org 70 i extern int matchc; Err bitreich.org 70 i Err bitreich.org 70 i int i; Err bitreich.org 70 i Err bitreich.org 70 i- for (i = cur + direction; 0 <= i && i < matchc; i += direction) { Err bitreich.org 70 i- if (!hsflag || matchv[i][0] != '#') { Err bitreich.org 70 i+ for (i = cur + sign; 0 <= i && i < matchc; i += sign) { Err bitreich.org 70 i+ if (hsflag == 0 || matchv[i][0] != '#') { Err bitreich.org 70 i cur = i; Err bitreich.org 70 i break; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -180,7 +180,7 @@ static void Err bitreich.org 70 i move_page(signed int sign) Err bitreich.org 70 i { Err bitreich.org 70 i extern struct winsize ws; Err bitreich.org 70 i- extern int matchc; Err bitreich.org 70 i+ extern int matchc, cur; Err bitreich.org 70 i Err bitreich.org 70 i int i, rows; Err bitreich.org 70 i Err bitreich.org 70 i@@ -193,6 +193,26 @@ move_page(signed int sign) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i+move_header(signed int sign) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ extern char **matchv; Err bitreich.org 70 i+ extern int matchc, cur; Err bitreich.org 70 i+ Err bitreich.org 70 i+ move(sign); Err bitreich.org 70 i+ if (hsflag == 0) Err bitreich.org 70 i+ return; Err bitreich.org 70 i+ for (cur += sign; 0 <= cur; cur += sign) { Err bitreich.org 70 i+ if (cur >= matchc) { Err bitreich.org 70 i+ cur--; Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ if (matchv[cur][0] == '#') Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ move(+1); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+static void Err bitreich.org 70 i remove_word() Err bitreich.org 70 i { Err bitreich.org 70 i extern char input[LINE_MAX]; Err bitreich.org 70 i@@ -277,10 +297,16 @@ top: Err bitreich.org 70 i case CTL('P'): Err bitreich.org 70 i move(-1); Err bitreich.org 70 i break; Err bitreich.org 70 i+ case ALT('p'): Err bitreich.org 70 i+ move_header(-1); Err bitreich.org 70 i+ break; Err bitreich.org 70 i case CSI('B'): /* down */ Err bitreich.org 70 i case CTL('N'): Err bitreich.org 70 i move(+1); Err bitreich.org 70 i break; Err bitreich.org 70 i+ case ALT('n'): Err bitreich.org 70 i+ move_header(+1); Err bitreich.org 70 i+ break; Err bitreich.org 70 i case CSI('5'): /* page up */ Err bitreich.org 70 i if (getkey() != '~') Err bitreich.org 70 i break; Err bitreich.org 70 .