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