iC-v M-v - 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 3d78cd3640a7bdbf23a67ff4566a8fa43ddeee33 /scm/iomenu/commit/3d78cd3640a7bdbf23a67ff4566a8fa43ddeee33.gph bitreich.org 70
1parent cd0632ced34f04b758489ce6c273b9a4e30abeca /scm/iomenu/commit/cd0632ced34f04b758489ce6c273b9a4e30abeca.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Sun, 30 Apr 2017 18:47:15 +0200 Err bitreich.org 70
i Err bitreich.org 70
iC-v M-v Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M iomenu.c | 27 ++++++++++++++++++++++----- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 22 insertions(+), 5 deletions(-) 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@@ -13,6 +13,7 @@ Err bitreich.org 70
i #define CONTINUE 2 /* as opposed to EXIT_SUCCESS and EXIT_FAILURE */ Err bitreich.org 70
i Err bitreich.org 70
i #define CONTROL(char) (char ^ 0x40) Err bitreich.org 70
i+#define ALT(char) (char + 0x80) Err bitreich.org 70
i #define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) Err bitreich.org 70
i Err bitreich.org 70
i Err bitreich.org 70
i@@ -178,7 +179,7 @@ print_lines(int count) Err bitreich.org 70
i while (printed < count && i < matchc) { Err bitreich.org 70
i char *s = format(matchv[i], ws.ws_col - 1); Err bitreich.org 70
i Err bitreich.org 70
i- if (opt_s && matchv[i][0] == '#') { Err bitreich.org 70
i+ if (opt_s && matchv[i][0] == opt_s) { Err bitreich.org 70
i fprintf(stderr, "\n\033[1m\033[K %s\033[m", s); Err bitreich.org 70
i } else if (i == current) { Err bitreich.org 70
i fprintf(stderr, "\n\033[30;47m\033[K %s\033[m", s); Err bitreich.org 70
i@@ -244,14 +245,14 @@ match_line(char *line, char **tokv, int tokc) Err bitreich.org 70
i Err bitreich.org 70
i Err bitreich.org 70
i static void Err bitreich.org 70
i-move_line(signed int count) Err bitreich.org 70
i+move_line(signed int n) Err bitreich.org 70
i { Err bitreich.org 70
i extern int current; Err bitreich.org 70
i extern char **matchv; Err bitreich.org 70
i Err bitreich.org 70
i int i; Err bitreich.org 70
i Err bitreich.org 70
i- for (i = current + count; 0 <= i && i < matchc; i += count) { Err bitreich.org 70
i+ for (i = current + n; 0 <= i && i < matchc; i += n) { Err bitreich.org 70
i if (!opt_s || matchv[i][0] != opt_s) { Err bitreich.org 70
i current = i; Err bitreich.org 70
i break; Err bitreich.org 70
i@@ -358,8 +359,9 @@ print_selection(void) Err bitreich.org 70
i static int Err bitreich.org 70
i input_key(void) Err bitreich.org 70
i { Err bitreich.org 70
i- char key = fgetc(stdin); Err bitreich.org 70
i+ int key = fgetc(stdin); Err bitreich.org 70
i Err bitreich.org 70
i+top: Err bitreich.org 70
i switch (key) { Err bitreich.org 70
i Err bitreich.org 70
i case CONTROL('C'): Err bitreich.org 70
i@@ -388,6 +390,14 @@ input_key(void) Err bitreich.org 70
i move_line(-1); Err bitreich.org 70
i break; Err bitreich.org 70
i Err bitreich.org 70
i+ case CONTROL('V'): Err bitreich.org 70
i+ move_line(ws.ws_row - 1); Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ Err bitreich.org 70
i+ case ALT('v'): Err bitreich.org 70
i+ move_line(-ws.ws_row + 1); Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ Err bitreich.org 70
i case CONTROL('I'): /* tab */ Err bitreich.org 70
i if (linec > 0) Err bitreich.org 70
i strcpy(input, matchv[current]); Err bitreich.org 70
i@@ -399,8 +409,15 @@ input_key(void) Err bitreich.org 70
i print_selection(); Err bitreich.org 70
i return EXIT_SUCCESS; Err bitreich.org 70
i Err bitreich.org 70
i+ case 033: /* escape / alt */ Err bitreich.org 70
i+ if (fgetc(stdin) == 'v') { Err bitreich.org 70
i+ key = ALT('v'); Err bitreich.org 70
i+ goto top; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ Err bitreich.org 70
i default: Err bitreich.org 70
i- add_character(key); Err bitreich.org 70
i+ add_character((char) key); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i return CONTINUE; Err bitreich.org 70
.
Response:
text/plain