it* sacc + cursorline and uri preview Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/sacc-sdk URL:git://git.codevoid.de/sacc-sdk codevoid.de 70 1Log /git/sacc-sdk/log.gph codevoid.de 70 1Files /git/sacc-sdk/files.gph codevoid.de 70 1Refs /git/sacc-sdk/refs.gph codevoid.de 70 1LICENSE /git/sacc-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit ba3bd1d88313cb8b876bc5d05de3d7449c03f38b /git/sacc-sdk/commit/ba3bd1d88313cb8b876bc5d05de3d7449c03f38b.gph codevoid.de 70 1parent 19ce7fd296bf5b5358b2d84a071466106ecf9204 /git/sacc-sdk/commit/19ce7fd296bf5b5358b2d84a071466106ecf9204.gph codevoid.de 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space codevoid.de 70 iDate: Sat, 27 Jan 2018 18:03:17 +0100 Err codevoid.de 70 i Err codevoid.de 70 iHandle terminal resizing Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M common.h | 1 + Err codevoid.de 70 i M sacc.c | 9 ++++++++- Err codevoid.de 70 i M ui_ti.c | 12 ++++++++++++ Err codevoid.de 70 i M ui_txt.c | 33 +++++++++++++++++++++---------- Err codevoid.de 70 i Err codevoid.de 70 i4 files changed, 44 insertions(+), 11 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/common.h b/common.h /git/sacc-sdk/file/common.h.gph codevoid.de 70 it@@ -30,3 +30,4 @@ void uistatus(char *fmt, ...); Err codevoid.de 70 i void uicleanup(void); Err codevoid.de 70 i char *uiprompt(char *fmt, ...); Err codevoid.de 70 i void uisetup(void); Err codevoid.de 70 i+void uisigwinch(int signal); Err codevoid.de 70 1diff --git a/sacc.c b/sacc.c /git/sacc-sdk/file/sacc.c.gph codevoid.de 70 it@@ -3,6 +3,7 @@ Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 i+#include Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 it@@ -779,6 +780,7 @@ cleanup(void) Err codevoid.de 70 i static void Err codevoid.de 70 i setup(void) Err codevoid.de 70 i { Err codevoid.de 70 i+ struct sigaction sa; Err codevoid.de 70 i int fd; Err codevoid.de 70 i Err codevoid.de 70 i setenv("PAGER", "more", 0); Err codevoid.de 70 it@@ -793,8 +795,13 @@ setup(void) Err codevoid.de 70 i die("open: /dev/null: %s", strerror(errno)); Err codevoid.de 70 i if (mkdir(tmpdir, S_IRWXU) < 0 && errno != EEXIST) Err codevoid.de 70 i die("mkdir: %s: %s", tmpdir, strerror(errno)); Err codevoid.de 70 i- if(interactive = isatty(1)) Err codevoid.de 70 i+ if(interactive = isatty(1)) { Err codevoid.de 70 i uisetup(); Err codevoid.de 70 i+ sigemptyset(&sa.sa_mask); Err codevoid.de 70 i+ sa.sa_handler = uisigwinch; Err codevoid.de 70 i+ sa.sa_flags = SA_RESTART; Err codevoid.de 70 i+ sigaction(SIGWINCH, &sa, NULL); Err codevoid.de 70 i+ } Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i int Err codevoid.de 70 1diff --git a/ui_ti.c b/ui_ti.c /git/sacc-sdk/file/ui_ti.c.gph codevoid.de 70 it@@ -16,6 +16,7 @@ Err codevoid.de 70 i static char bufout[256]; Err codevoid.de 70 i static struct termios tsave; Err codevoid.de 70 i static struct termios tsacc; Err codevoid.de 70 i+static Item *curentry; Err codevoid.de 70 i #if defined(__NetBSD__) Err codevoid.de 70 i #undef tparm Err codevoid.de 70 i #define tparm tiparm Err codevoid.de 70 it@@ -244,6 +245,8 @@ uidisplay(Item *entry) Err codevoid.de 70 i !(entry->type == '1' || entry->type == '+' || entry->type == '7')) Err codevoid.de 70 i return; Err codevoid.de 70 i Err codevoid.de 70 i+ curentry = entry; Err codevoid.de 70 i+ Err codevoid.de 70 i putp(tparm(clear_screen)); Err codevoid.de 70 i displaystatus(entry); Err codevoid.de 70 i Err codevoid.de 70 it@@ -536,3 +539,12 @@ uiselectitem(Item *entry) Err codevoid.de 70 i } Err codevoid.de 70 i } Err codevoid.de 70 i } Err codevoid.de 70 i+ Err codevoid.de 70 i+void Err codevoid.de 70 i+uisigwinch(int signal) Err codevoid.de 70 i+{ Err codevoid.de 70 i+ setupterm(NULL, 1, NULL); Err codevoid.de 70 i+ putp(tparm(change_scroll_region, 0, lines-2)); Err codevoid.de 70 i+ Err codevoid.de 70 i+ uidisplay(curentry); Err codevoid.de 70 i+} Err codevoid.de 70 1diff --git a/ui_txt.c b/ui_txt.c /git/sacc-sdk/file/ui_txt.c.gph codevoid.de 70 it@@ -11,6 +11,8 @@ Err codevoid.de 70 i #include "common.h" Err codevoid.de 70 i Err codevoid.de 70 i static char bufout[256]; Err codevoid.de 70 i+static Item *curentry; Err codevoid.de 70 i+static char cmd; Err codevoid.de 70 i int lines, columns; Err codevoid.de 70 i Err codevoid.de 70 i static void Err codevoid.de 70 it@@ -148,6 +150,8 @@ uidisplay(Item *entry) Err codevoid.de 70 i !(dir = entry->dat)) Err codevoid.de 70 i return; Err codevoid.de 70 i Err codevoid.de 70 i+ curentry = entry; Err codevoid.de 70 i+ Err codevoid.de 70 i items = dir->items; Err codevoid.de 70 i nitems = dir->nitems; Err codevoid.de 70 i nlines = dir->printoff + lines; Err codevoid.de 70 it@@ -218,7 +222,6 @@ Item * Err codevoid.de 70 i uiselectitem(Item *entry) Err codevoid.de 70 i { Err codevoid.de 70 i Dir *dir; Err codevoid.de 70 i- static char c; Err codevoid.de 70 i char buf[BUFSIZ], *sstr, nl; Err codevoid.de 70 i int item, nitems; Err codevoid.de 70 i Err codevoid.de 70 it@@ -228,9 +231,9 @@ uiselectitem(Item *entry) Err codevoid.de 70 i nitems = dir ? dir->nitems : 0; Err codevoid.de 70 i Err codevoid.de 70 i for (;;) { Err codevoid.de 70 i- if (!c) Err codevoid.de 70 i- c = 'h'; Err codevoid.de 70 i- printstatus(entry, c); Err codevoid.de 70 i+ if (!cmd) Err codevoid.de 70 i+ cmd = 'h'; Err codevoid.de 70 i+ printstatus(entry, cmd); Err codevoid.de 70 i fflush(stdout); Err codevoid.de 70 i Err codevoid.de 70 i if (!fgets(buf, sizeof(buf), stdin)) { Err codevoid.de 70 it@@ -238,28 +241,28 @@ uiselectitem(Item *entry) Err codevoid.de 70 i return NULL; Err codevoid.de 70 i } Err codevoid.de 70 i if (isdigit(*buf)) { Err codevoid.de 70 i- c = '\0'; Err codevoid.de 70 i+ cmd = '\0'; Err codevoid.de 70 i nl = '\0'; Err codevoid.de 70 i if (sscanf(buf, "%d%c", &item, &nl) != 2 || nl != '\n') Err codevoid.de 70 i item = -1; Err codevoid.de 70 i } else if (!strcmp(buf+1, "\n")) { Err codevoid.de 70 i item = -1; Err codevoid.de 70 i- c = *buf; Err codevoid.de 70 i+ cmd = *buf; Err codevoid.de 70 i } else if (*buf == '/') { Err codevoid.de 70 i for (sstr = buf+1; *sstr && *sstr != '\n'; ++sstr) Err codevoid.de 70 i ; Err codevoid.de 70 i *sstr = '\0'; Err codevoid.de 70 i sstr = buf+1; Err codevoid.de 70 i- c = *buf; Err codevoid.de 70 i+ cmd = *buf; Err codevoid.de 70 i } else if (isdigit(*(buf+1))) { Err codevoid.de 70 i nl = '\0'; Err codevoid.de 70 i if (sscanf(buf+1, "%d%c", &item, &nl) != 2 || nl != '\n') Err codevoid.de 70 i item = -1; Err codevoid.de 70 i else Err codevoid.de 70 i- c = *buf; Err codevoid.de 70 i+ cmd = *buf; Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i- switch (c) { Err codevoid.de 70 i+ switch (cmd) { Err codevoid.de 70 i case '\0': Err codevoid.de 70 i break; Err codevoid.de 70 i case 'q': Err codevoid.de 70 it@@ -301,7 +304,7 @@ uiselectitem(Item *entry) Err codevoid.de 70 i help(); Err codevoid.de 70 i continue; Err codevoid.de 70 i default: Err codevoid.de 70 i- c = 'h'; Err codevoid.de 70 i+ cmd = 'h'; Err codevoid.de 70 i continue; Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 it@@ -314,3 +317,13 @@ uiselectitem(Item *entry) Err codevoid.de 70 i Err codevoid.de 70 i return entry->entry; Err codevoid.de 70 i } Err codevoid.de 70 i+ Err codevoid.de 70 i+void Err codevoid.de 70 i+uisigwinch(int signal) Err codevoid.de 70 i+{ Err codevoid.de 70 i+ uisetup(); Err codevoid.de 70 i+ putchar('\n'); Err codevoid.de 70 i+ uidisplay(curentry); Err codevoid.de 70 i+ printstatus(curentry, cmd); Err codevoid.de 70 i+ fflush(stdout); Err codevoid.de 70 i+} Err codevoid.de 70 .