iremoved the segment feature all over again - 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 8850bebc9c87d3331bcfcf6139f05821c6f1237e /scm/iomenu/commit/8850bebc9c87d3331bcfcf6139f05821c6f1237e.gph bitreich.org 70
1parent 0502e73cca4f319ac484f66983cf6d40bdf843da /scm/iomenu/commit/0502e73cca4f319ac484f66983cf6d40bdf843da.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Mon, 30 Oct 2017 00:41:32 +0100 Err bitreich.org 70
i Err bitreich.org 70
iremoved the segment feature all over again Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M control.c | 59 +++---------------------------- Err bitreich.org 70
i M display.c | 70 +++++++++++-------------------- Err bitreich.org 70
i M iomenu.1 | 5 +---- Err bitreich.org 70
i M main.c | 2 +- Err bitreich.org 70
i Err bitreich.org 70
i4 files changed, 32 insertions(+), 104 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/control.c b/control.c /scm/iomenu/file/control.c.gph bitreich.org 70
i@@ -15,45 +15,6 @@ Err bitreich.org 70
i #define ALT(char) ((char) + 0x80) Err bitreich.org 70
i #define CSI(char) ((char) + 0x80 + 0x80) Err bitreich.org 70
i Err bitreich.org 70
i-static size_t Err bitreich.org 70
i-width(char *s) Err bitreich.org 70
i-{ Err bitreich.org 70
i- int width = 0; Err bitreich.org 70
i- Err bitreich.org 70
i- while (*s) { Err bitreich.org 70
i- if (*s++ == '\t') Err bitreich.org 70
i- width += 8 - (width % 8); Err bitreich.org 70
i- else Err bitreich.org 70
i- width++; Err bitreich.org 70
i- } Err bitreich.org 70
i- Err bitreich.org 70
i- return width; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-int Err bitreich.org 70
i-prev_page(int pos) Err bitreich.org 70
i-{ Err bitreich.org 70
i- int col; Err bitreich.org 70
i- int cols = ws.ws_col - MARGIN - 4; Err bitreich.org 70
i- Err bitreich.org 70
i- pos -= pos > 0 ? 1 : 0; Err bitreich.org 70
i- for (col = 0; pos > 0; pos--) Err bitreich.org 70
i- if ((col += width(matchv[pos]) + 2) > cols) Err bitreich.org 70
i- return pos + 1; Err bitreich.org 70
i- return pos; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-int Err bitreich.org 70
i-next_page(int pos) Err bitreich.org 70
i-{ Err bitreich.org 70
i- int col, cols = ws.ws_col - MARGIN - 4; Err bitreich.org 70
i- Err bitreich.org 70
i- for (col = 0; pos < matchc; pos++) Err bitreich.org 70
i- if ((col += width(matchv[pos]) + 2) > cols) Err bitreich.org 70
i- return pos; Err bitreich.org 70
i- return pos; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i void Err bitreich.org 70
i move(signed int sign) Err bitreich.org 70
i { Err bitreich.org 70
i@@ -72,21 +33,11 @@ move_page(signed int sign) Err bitreich.org 70
i { Err bitreich.org 70
i int i; Err bitreich.org 70
i Err bitreich.org 70
i- if (opt['l'] <= 0) { Err bitreich.org 70
i- if (sign > 0) { Err bitreich.org 70
i- offset = current = next; Err bitreich.org 70
i- next = next_page(next); Err bitreich.org 70
i- } else if (sign < 0) { Err bitreich.org 70
i- next = offset; Err bitreich.org 70
i- offset = current = prev_page(offset); Err bitreich.org 70
i- } Err bitreich.org 70
i- } else { Err bitreich.org 70
i- i = current - current % rows + rows * sign; Err bitreich.org 70
i- if (!(0 < i && i < matchc)) Err bitreich.org 70
i- return; Err bitreich.org 70
i- current = i - 1; Err bitreich.org 70
i- move(+1); Err bitreich.org 70
i- } Err bitreich.org 70
i+ i = current - current % rows + rows * sign; Err bitreich.org 70
i+ if (!(0 < i && i < matchc)) Err bitreich.org 70
i+ return; Err bitreich.org 70
i+ current = i - 1; 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
1diff --git a/display.c b/display.c /scm/iomenu/file/display.c.gph bitreich.org 70
i@@ -40,60 +40,40 @@ format(char *str, int cols) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static void Err bitreich.org 70
i-print_lines(void) Err bitreich.org 70
i+print_line(char *line, int cur) Err bitreich.org 70
i { Err bitreich.org 70
i- int printed = 0, i = current - current % rows; Err bitreich.org 70
i- Err bitreich.org 70
i- for (; printed < rows && i < matchc; i++, printed++) { Err bitreich.org 70
i- fprintf(stderr, Err bitreich.org 70
i- opt['#'] && matchv[i][0] == '#' ? Err bitreich.org 70
i- "\n\x1b[1m\x1b[K %s\x1b[m" : Err bitreich.org 70
i- i == current ? Err bitreich.org 70
i- "\n\x1b[47;30m\x1b[K %s\x1b[m" : Err bitreich.org 70
i- "\n\x1b[K %s", Err bitreich.org 70
i- format(matchv[i], ws.ws_col - 1) Err bitreich.org 70
i- ); Err bitreich.org 70
i+ if (opt['#'] && line[0] == '#') { Err bitreich.org 70
i+ format(line + 1, ws.ws_col - 1); Err bitreich.org 70
i+ fprintf(stderr, "\n\x1b[1m\x1b[K %s\x1b[m", formatted); Err bitreich.org 70
i+ } else if (cur) { Err bitreich.org 70
i+ format(line, ws.ws_col - 1); Err bitreich.org 70
i+ fprintf(stderr, "\n\x1b[47;30m\x1b[K %s\x1b[m", formatted); Err bitreich.org 70
i+ } else { Err bitreich.org 70
i+ format(line, ws.ws_col - 1); Err bitreich.org 70
i+ fprintf(stderr, "\n\x1b[K %s", formatted); Err bitreich.org 70
i } Err bitreich.org 70
i- while (printed++ < rows) Err bitreich.org 70
i- fputs("\n\x1b[K", stderr); Err bitreich.org 70
i- fprintf(stderr, "\x1b[%dA\r\x1b[K", rows); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-static void Err bitreich.org 70
i-print_segments(void) Err bitreich.org 70
i-{ Err bitreich.org 70
i- int i; Err bitreich.org 70
i- Err bitreich.org 70
i- if (current < offset) { Err bitreich.org 70
i- next = offset; Err bitreich.org 70
i- offset = prev_page(offset); Err bitreich.org 70
i- } else if (current >= next) { Err bitreich.org 70
i- offset = next; Err bitreich.org 70
i- next = next_page(offset); Err bitreich.org 70
i- } Err bitreich.org 70
i- fprintf(stderr, "\r\x1b[K\x1b[%dC", MARGIN); Err bitreich.org 70
i- fputs(offset > 0 ? "< " : " ", stderr); Err bitreich.org 70
i- for (i = offset; i < next && i < matchc; i++) { Err bitreich.org 70
i- fprintf(stderr, Err bitreich.org 70
i- opt['#'] && matchv[i][0] == '#' ? "\x1b[1m %s \x1b[m" : Err bitreich.org 70
i- i == current ? "\x1b[7m %s \x1b[m" : " %s ", Err bitreich.org 70
i- format(matchv[i], ws.ws_col - 1) Err bitreich.org 70
i- ); Err bitreich.org 70
i- } Err bitreich.org 70
i- if (next < matchc) Err bitreich.org 70
i- fprintf(stderr, "\x1b[%dC\b>", ws.ws_col - MARGIN); Err bitreich.org 70
i- fputc('\r', stderr); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i print_screen(void) Err bitreich.org 70
i { Err bitreich.org 70
i+ char **m; Err bitreich.org 70
i+ int p; Err bitreich.org 70
i+ int i; Err bitreich.org 70
i int cols = ws.ws_col - 1; Err bitreich.org 70
i Err bitreich.org 70
i- if (opt['l'] > 0) Err bitreich.org 70
i- print_lines(); Err bitreich.org 70
i- else Err bitreich.org 70
i- print_segments(); Err bitreich.org 70
i+ p = 0; Err bitreich.org 70
i+ i = current - current % rows; Err bitreich.org 70
i+ m = matchv + i; Err bitreich.org 70
i+ while (p < rows && i < matchc) { Err bitreich.org 70
i+ print_line(*m, i == current); Err bitreich.org 70
i+ p++, i++, m++; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ while (p < rows) { Err bitreich.org 70
i+ fputs("\n\x1b[K", stderr); Err bitreich.org 70
i+ p++; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ fprintf(stderr, "\x1b[%dA\r\x1b[K", rows); Err bitreich.org 70
i if (*prompt) { Err bitreich.org 70
i format(prompt, cols - 2); Err bitreich.org 70
i fprintf(stderr, "\x1b[30;47m %s \x1b[m", formatted); Err bitreich.org 70
1diff --git a/iomenu.1 b/iomenu.1 /scm/iomenu/file/iomenu.1.gph bitreich.org 70
i@@ -35,10 +35,7 @@ The selected line is printed to standard output. Err bitreich.org 70
i .It Fl l Ar lines Err bitreich.org 70
i If Err bitreich.org 70
i .Ar lines Err bitreich.org 70
i-is 0, the items are displayed in an horizontal list; Err bitreich.org 70
i-otherwise, in a vertical list of at most Err bitreich.org 70
i-.Ar lines Err bitreich.org 70
i-lines. Err bitreich.org 70
i+Total amount of lines to display on the screen. Err bitreich.org 70
i . Err bitreich.org 70
i .It Fl p Ar prompt Err bitreich.org 70
i Set the prompt to display at the beginning of the input to Err bitreich.org 70
1diff --git a/main.c b/main.c /scm/iomenu/file/main.c.gph bitreich.org 70
i@@ -103,7 +103,7 @@ parse_opt(int argc, char *argv[]) Err bitreich.org 70
i usage(); Err bitreich.org 70
i switch ((*argv)[1]) { Err bitreich.org 70
i case 'l': Err bitreich.org 70
i- if (!--argc || sscanf(*++argv, "%d", &opt['l']) <= 0) Err bitreich.org 70
i+ if (!--argc || (opt['l'] = atoi(*++argv)) <= 0) Err bitreich.org 70
i usage(); Err bitreich.org 70
i break; Err bitreich.org 70
i case 'p': Err bitreich.org 70
.
Response:
text/plain