SMOLNET PORTAL home about changes
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
Original URLgopher://bitreich.org/0/scm/iomenu/commit/8850bebc9c87d33...
Content-Typetext/plain; charset=utf-8