SMOLNET PORTAL home about changes
iAdded support for page up and down with Ctrl/Alt + 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 422bb3cf75123ac36aed39c370de89dfbe55dd78	/scm/iomenu/commit/422bb3cf75123ac36aed39c370de89dfbe55dd78.gph	bitreich.org	70
1parent e2db9fd49d5351986d5803604bed7e2680545621	/scm/iomenu/commit/e2db9fd49d5351986d5803604bed7e2680545621.gph	bitreich.org	70
hAuthor: Josuah Demangeon <josuah.demangeon@gandi.net>	URL:mailto:josuah.demangeon@gandi.net	bitreich.org	70
iDate:   Mon, 21 Aug 2017 09:04:18 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iAdded support for page up and down with Ctrl/Alt + v	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M README                              |      34 ++++++++++++++++++-------------	Err	bitreich.org	70
i  M iomenu.1                            |      24 +++++++++++++++---------	Err	bitreich.org	70
i  M iomenu.c                            |      51 +++++++++++++++++++------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 66 insertions(+), 43 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/README b/README	/scm/iomenu/file/README.gph	bitreich.org	70
i@@ -1,7 +1,7 @@	Err	bitreich.org	70
i-IOMENU(1)                   General Commands Manual                  IOMENU(1)	Err	bitreich.org	70
i+IOMENU(1)               FreeBSD General Commands Manual              IOMENU(1)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i NAME	Err	bitreich.org	70
i-     iomenu – interactive selection menu	Err	bitreich.org	70
i+     iomenu - interactive selection menu	Err	bitreich.org	70
i 	Err	bitreich.org	70
i SYNOPSIS	Err	bitreich.org	70
i      iomenu [-#] [-l lines] [-p prompt]	Err	bitreich.org	70
i@@ -22,28 +22,34 @@ DESCRIPTION	Err	bitreich.org	70
i      -#                If a line starts with #, iomenu will interprete it as a	Err	bitreich.org	70
i                        header, which always matches, and can not be printed.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-   Selection control	Err	bitreich.org	70
i+   Selection keybindings	Err	bitreich.org	70
i      An active selection is highlighted, and can be controlled with	Err	bitreich.org	70
i      keybindings.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-     ^P, ^N           Move selection to the previous/next item.	Err	bitreich.org	70
i+     Ctrl + p, Ctrl + n	Err	bitreich.org	70
i+                      Move selection to the previous/next item.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-     ^M, ^J, Enter    Print the selection to the standard output, and exit 0.	Err	bitreich.org	70
i+     Ctrl + v Ns, Alt + v	Err	bitreich.org	70
i+                      Move one page up or down.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-   Input handling	Err	bitreich.org	70
i-     As printable keys are entered, the selection is filtered to match every	Err	bitreich.org	70
i-     word from the input.	Err	bitreich.org	70
i+     Ctrl + m, Ctrl + j, Enter	Err	bitreich.org	70
i+                      Print the selection to the standard output, and exit 0.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-     ^H, Bakcspace    Remove last character from current input.	Err	bitreich.org	70
i+Text input	Err	bitreich.org	70
i+     As printable keys are entered, the lines are filtered to match each word	Err	bitreich.org	70
i+     from the input.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-     ^W               Remove last word from current input.	Err	bitreich.org	70
i+     Ctrl + h, Bakcspace	Err	bitreich.org	70
i+                      Remove last character from current input.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-     ^U               Remove the whole input string.	Err	bitreich.org	70
i+     Ctrl + w         Remove last word from current input.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-     ^I, Tab          Fill the input with current selection.	Err	bitreich.org	70
i+     Ctrl + u         Remove the whole input string.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+     Ctrl + i, Tab    Fill the input with current selection.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i EXIT STATUS	Err	bitreich.org	70
i-     The iomenu utility exits 0 on success, and >0 if an error occurs.	Err	bitreich.org	70
i+     The iomenu utility exits 0 on success, and >0 if an error occurs.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i EXAMPLES	Err	bitreich.org	70
i      Open a bookmark from a list in a text file:	Err	bitreich.org	70
i@@ -80,4 +86,4 @@ AUTORS	Err	bitreich.org	70
i      iomenu was written from scratch by Josuah Demangeon <mail@josuah.net>	Err	bitreich.org	70
i      with the help of dmenu(1) and vis-menu(1) as models.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-Void Linux                      August 21, 2017                     Void Linux	Err	bitreich.org	70
i+FreeBSD 11.0-RELEASE-p1         August 21, 2017        FreeBSD 11.0-RELEASE-p1	Err	bitreich.org	70
1diff --git a/iomenu.1 b/iomenu.1	/scm/iomenu/file/iomenu.1.gph	bitreich.org	70
i@@ -54,36 +54,42 @@ will interprete it as a header, which always matches, and can not be	Err	bitreich.org	70
i printed.	Err	bitreich.org	70
i .	Err	bitreich.org	70
i .	Err	bitreich.org	70
i-.Ss Selection control	Err	bitreich.org	70
i+.Ss Selection keybindings	Err	bitreich.org	70
i .	Err	bitreich.org	70
i An active selection is highlighted, and can be controlled with keybindings.	Err	bitreich.org	70
i .Bl -tag -width XXXXXXXXXXXXXXX	Err	bitreich.org	70
i .	Err	bitreich.org	70
i-.It Ic ^P Ns , Ic ^N	Err	bitreich.org	70
i+.It 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 ^M Ns , Ic ^J Ns , Ic Enter	Err	bitreich.org	70
i+.It Ic Ctrl + v Ns, Ic Alt + v	Err	bitreich.org	70
i+Move one page up or down.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Ic Ctrl + m Ns , Ic Ctrl + j Ns , Ic Enter	Err	bitreich.org	70
i Print the selection to the standard output, and exit 0.	Err	bitreich.org	70
i .	Err	bitreich.org	70
i .El	Err	bitreich.org	70
i .	Err	bitreich.org	70
i-.Ss Input handling	Err	bitreich.org	70
i .	Err	bitreich.org	70
i-As printable keys are entered, the selection is filtered to match every	Err	bitreich.org	70
i+.Sh Text input	Err	bitreich.org	70
i+.	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 .	Err	bitreich.org	70
i-.It Ic ^H Ns , Ic Bakcspace	Err	bitreich.org	70
i+.It Ic Ctrl + h Ns , Ic Bakcspace	Err	bitreich.org	70
i Remove last character from current input.	Err	bitreich.org	70
i .	Err	bitreich.org	70
i-.It Ic ^W	Err	bitreich.org	70
i+.It Ic Ctrl + w	Err	bitreich.org	70
i Remove last word from current input.	Err	bitreich.org	70
i .	Err	bitreich.org	70
i-.It Ic ^U	Err	bitreich.org	70
i+.It Ic Ctrl + u	Err	bitreich.org	70
i Remove the whole input string.	Err	bitreich.org	70
i .	Err	bitreich.org	70
i-.It Ic ^I Ns , Ic Tab	Err	bitreich.org	70
i+.It Ic Ctrl + i Ns , Ic Tab	Err	bitreich.org	70
i Fill the input with current selection.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i .El	Err	bitreich.org	70
i .	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@@ -18,13 +18,13 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static struct winsize ws;	Err	bitreich.org	70
i static struct termios termios;	Err	bitreich.org	70
i-static int    ttyfd;	Err	bitreich.org	70
i-static int    current = 0, offset = 0, prev = 0, next = 0;	Err	bitreich.org	70
i-static int    linec = 0,      matchc = 0;	Err	bitreich.org	70
i-static char **linev = NULL, **matchv = NULL;	Err	bitreich.org	70
i-static char   input[BUFSIZ], formatted[BUFSIZ * 8];	Err	bitreich.org	70
i-static int    opt[128];	Err	bitreich.org	70
i-static char  *prompt = "";	Err	bitreich.org	70
i+static int            ttyfd;	Err	bitreich.org	70
i+static int            current = 0, offset = 0, prev = 0, next = 0;	Err	bitreich.org	70
i+static int            linec = 0,      matchc = 0;	Err	bitreich.org	70
i+static char         **linev = NULL, **matchv = NULL;	Err	bitreich.org	70
i+static char           input[BUFSIZ], formatted[BUFSIZ * 8];	Err	bitreich.org	70
i+static int            opt[128], rows = 0;	Err	bitreich.org	70
i+static char          *prompt = "";	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i freelines(void)	Err	bitreich.org	70
i@@ -145,11 +145,11 @@ 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-printlines(int count)	Err	bitreich.org	70
i+printlines(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        int printed = 0, i = current / count * count;	Err	bitreich.org	70
i+        int printed = 0, i = current - current % rows;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        while (printed < count && i < matchc) {	Err	bitreich.org	70
i+        while (printed < rows && i < matchc) {	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                 char *s = format(matchv[i], ws.ws_col - 1);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -163,7 +163,7 @@ printlines(int count)	Err	bitreich.org	70
i                 i++; printed++;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        while (printed++ < count)	Err	bitreich.org	70
i+        while (printed++ < rows)	Err	bitreich.org	70
i                 fputs("\n\033[K", stderr);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -171,12 +171,11 @@ static void	Err	bitreich.org	70
i printscreen(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int cols = ws.ws_col - 1;	Err	bitreich.org	70
i-        int count = MIN(opt['l'], ws.ws_row - 1);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         fputs("\r\033[K", stderr);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        printlines(count);	Err	bitreich.org	70
i-        fprintf(stderr, "\033[%dA\r", count);	Err	bitreich.org	70
i+        printlines();	Err	bitreich.org	70
i+        fprintf(stderr, "\033[%dA\r", rows);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (*prompt) {	Err	bitreich.org	70
i                 format(prompt, cols - 2);	Err	bitreich.org	70
i@@ -204,11 +203,11 @@ matchline(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(signed int n)	Err	bitreich.org	70
i+move(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-        for (i = current + n; 0 <= i && i < matchc; i += n) {	Err	bitreich.org	70
i+        for (i = current + sign; 0 <= i && i < matchc; i += sign) {	Err	bitreich.org	70
i                 if (!opt['#'] || matchv[i][0] != '#') {	Err	bitreich.org	70
i                         current = i;	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i@@ -217,6 +216,18 @@ move(signed int n)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i+movepg(signed int sign)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        int i = current - current % rows + rows * sign;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (0 > i || i > matchc)	Err	bitreich.org	70
i+                return;	Err	bitreich.org	70
i+	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
i filter(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         char **tokv = NULL, *s, buffer[sizeof (input)];	Err	bitreich.org	70
i@@ -280,7 +291,6 @@ addchar(char key)	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i printselection(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        /* header */	Err	bitreich.org	70
i         if (opt['#']) {	Err	bitreich.org	70
i                 char **match = matchv + current;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -294,7 +304,6 @@ printselection(void)	Err	bitreich.org	70
i                 putchar('\t');	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        /* input or selection */	Err	bitreich.org	70
i         if (matchc == 0 || (opt['#'] && matchv[current][0] == '#')) {	Err	bitreich.org	70
i                 puts(input);	Err	bitreich.org	70
i         } else {	Err	bitreich.org	70
i@@ -339,11 +348,11 @@ top:	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(ws.ws_row - 1);	Err	bitreich.org	70
i+                movepg(+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(-ws.ws_row + 1);	Err	bitreich.org	70
i+                movepg(-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@@ -373,6 +382,8 @@ sigwinch()	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         if (ioctl(ttyfd, TIOCGWINSZ, &ws) < 0)	Err	bitreich.org	70
i                 die("ioctl");	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        rows = MIN(opt['l'], ws.ws_row - 1);	Err	bitreich.org	70
i         printscreen();	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         signal(SIGWINCH, sigwinch);	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/iomenu/commit/422bb3cf75123ac...
Content-Typetext/plain; charset=utf-8