Larger margin - iomenu - interactive terminal-based selection menu
HTML git clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu
DIR Log
DIR Files
DIR Refs
DIR Tags
DIR README
DIR LICENSE
---
DIR commit 345619b172bfd56f1807f8ffce5795e54c453127
DIR parent b95967e4d0296ca835ced868042b837f840d8019
HTML Author: Josuah Demangeon <mail@josuah.net>
Date: Fri, 14 Apr 2017 17:25:01 +0200
Larger margin
Diffstat:
M iomenu.c | 33 +++++++++++++------------------
1 file changed, 14 insertions(+), 19 deletions(-)
---
DIR diff --git a/iomenu.c b/iomenu.c
@@ -10,7 +10,7 @@
#include <sys/ioctl.h>
-#define OFFSET 40 /* in horizontal mode, amount of space kept for writing */
+#define MARGIN 4 /* amount of space at the left and right of the feed */
#define CONTINUE 2 /* as opposed to EXIT_SUCCESS and EXIT_FAILURE */
#define CONTROL(char) (char ^ 0x40)
@@ -143,6 +143,8 @@ read_lines(void)
static char *
format(char *str, int cols)
{
+ extern char formatted[BUFSIZ * 8];
+
int j = 0;
for (int i = 0; str[i] && j < cols; i++) {
@@ -166,30 +168,24 @@ format(char *str, int cols)
static void
-print_string(char *str, int iscurrent)
+print_lines(int count)
{
extern int opt_l;
extern char opt_s;
- fputs(iscurrent ? "\033[30;47m\033[K " : "\033[K ", stderr);
-
- if (opt_s && str[0] == '#')
- fputs("\033[1;30m", stderr);
-
- fputs(format(str, ws.ws_col - 2), stderr);
- fputs(" \033[m", stderr);
-}
-
-
-static void
-print_lines(int count)
-{
int p = 0; /* amount of lines printed */
offset = current / count * count;
for (int i = offset; p < count && i < matchc; p++, i++) {
fputc('\n', stderr);
- print_string(matchv[i], i == current);
+
+ fputs(i == current ? "\033[30;47m\033[K" : "\033[K", stderr);
+
+ fprintf(stderr,
+ opt_s && matchv[i][0] == '#' ? "\033[1m%s" : " %s",
+ format(matchv[i], ws.ws_col - 2 * MARGIN));
+
+ fputs(" \033[m", stderr);
}
while (p++ < count)
@@ -202,7 +198,7 @@ print_screen(void)
{
extern char formatted[BUFSIZ * 8];
- int cols = opt_l || matchc == 0 ? ws.ws_col - 2 : OFFSET - 3;
+ int cols = ws.ws_col - MARGIN;
fputs("\r\033[K", stderr);
@@ -226,8 +222,7 @@ print_screen(void)
fputc(' ', stderr);
/* input */
- format(input, cols);
- fputs(formatted, stderr);
+ fputs(format(input, cols), stderr);
fflush(stderr);
}