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 3eabb27085c4725068d843aed2168af1e6834964 /git/sacc-sdk/commit/3eabb27085c4725068d843aed2168af1e6834964.gph codevoid.de 70 1parent 078d0408656082f0cff4dd7f2b39dc988bc2391e /git/sacc-sdk/commit/078d0408656082f0cff4dd7f2b39dc988bc2391e.gph codevoid.de 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space codevoid.de 70 iDate: Wed, 30 Aug 2017 17:37:19 +0200 Err codevoid.de 70 i Err codevoid.de 70 iAdd a key to display an entry uri Err codevoid.de 70 i Err codevoid.de 70 iThanks to Nick for the suggestion and work he did on it! Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M config.def.h | 1 + Err codevoid.de 70 i M ui_ti.c | 28 ++++++++++++++++++++++++++++ Err codevoid.de 70 i M ui_txt.c | 47 +++++++++++++++++++++++++------ Err codevoid.de 70 i Err codevoid.de 70 i3 files changed, 68 insertions(+), 8 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/config.def.h b/config.def.h /git/sacc-sdk/file/config.def.h.gph codevoid.de 70 it@@ -9,6 +9,7 @@ Err codevoid.de 70 i #define _key_end 'G' /* move to the bottom of page */ Err codevoid.de 70 i #define _key_pgnext 'l' /* view highlighted item */ Err codevoid.de 70 i #define _key_pgprev 'h' /* view previous item */ Err codevoid.de 70 i+#define _key_uri 'u' /* print item uri */ Err codevoid.de 70 i #define _key_fetch 'L' /* refetch current item */ Err codevoid.de 70 i #define _key_help '?' /* display help */ Err codevoid.de 70 i #define _key_quit 'q' /* exit sacc */ 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@@ -152,6 +152,30 @@ displaystatus(Item *item) Err codevoid.de 70 i fflush(stdout); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i+static void Err codevoid.de 70 i+displayuri(Item *item) Err codevoid.de 70 i+{ Err codevoid.de 70 i+ putp(tparm(save_cursor)); Err codevoid.de 70 i+ Err codevoid.de 70 i+ putp(tparm(cursor_address, lines-1, 0)); Err codevoid.de 70 i+ putp(tparm(enter_standout_mode)); Err codevoid.de 70 i+ switch (item->type) { Err codevoid.de 70 i+ case 'i': Err codevoid.de 70 i+ break; Err codevoid.de 70 i+ case 'h': Err codevoid.de 70 i+ printf("%s: %s", item->username, item->selector); Err codevoid.de 70 i+ break; Err codevoid.de 70 i+ default: Err codevoid.de 70 i+ printf("%s: %s:%s%s", Err codevoid.de 70 i+ item->username, item->host, item->port, item->selector); Err codevoid.de 70 i+ break; Err codevoid.de 70 i+ } Err codevoid.de 70 i+ putp(tparm(exit_standout_mode)); Err codevoid.de 70 i+ Err codevoid.de 70 i+ putp(tparm(restore_cursor)); Err codevoid.de 70 i+ fflush(stdout); Err codevoid.de 70 i+} Err codevoid.de 70 i+ Err codevoid.de 70 i void Err codevoid.de 70 i uidisplay(Item *entry) Err codevoid.de 70 i { Err codevoid.de 70 it@@ -377,6 +401,10 @@ uiselectitem(Item *entry) Err codevoid.de 70 i if (entry->raw) Err codevoid.de 70 i continue; Err codevoid.de 70 i return entry; Err codevoid.de 70 i+ case _key_uri: Err codevoid.de 70 i+ if (dir) Err codevoid.de 70 i+ displayuri(dir->items[dir->curline]); Err codevoid.de 70 i+ continue; Err codevoid.de 70 i case _key_help: /* FALLTHROUGH */ Err codevoid.de 70 i return help(entry); Err codevoid.de 70 i default: 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@@ -132,6 +132,24 @@ uidisplay(Item *entry) Err codevoid.de 70 i fflush(stdout); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i+void Err codevoid.de 70 i+printuri(Item *item, size_t i) Err codevoid.de 70 i+{ Err codevoid.de 70 i+ if (!item) Err codevoid.de 70 i+ return; Err codevoid.de 70 i+ switch (item->type) { Err codevoid.de 70 i+ case 'i': Err codevoid.de 70 i+ break; Err codevoid.de 70 i+ case 'h': Err codevoid.de 70 i+ printf("%zu: %s: %s\n", i, item->username, item->selector); Err codevoid.de 70 i+ break; Err codevoid.de 70 i+ default: Err codevoid.de 70 i+ printf("%zu: %s: %s:%s%s\n", i, item->username, Err codevoid.de 70 i+ item->host, item->port, item->selector); Err codevoid.de 70 i+ break; Err codevoid.de 70 i+ } Err codevoid.de 70 i+} Err codevoid.de 70 i+ Err codevoid.de 70 i Item * Err codevoid.de 70 i uiselectitem(Item *entry) Err codevoid.de 70 i { Err codevoid.de 70 it@@ -147,8 +165,7 @@ uiselectitem(Item *entry) Err codevoid.de 70 i if (!c) Err codevoid.de 70 i c = 'h'; Err codevoid.de 70 i Err codevoid.de 70 i- do { Err codevoid.de 70 i- item = -1; Err codevoid.de 70 i+ for (;;) { Err codevoid.de 70 i printstatus(entry, c); Err codevoid.de 70 i fflush(stdout); Err codevoid.de 70 i Err codevoid.de 70 it@@ -156,10 +173,21 @@ uiselectitem(Item *entry) Err codevoid.de 70 i putchar('\n'); 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+ if (isdigit(*buf)) { Err codevoid.de 70 i c = '\0'; Err codevoid.de 70 i- else if (!strcmp(buf+1, "\n")) 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+ } 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+ } Err codevoid.de 70 i Err codevoid.de 70 i switch (c) { Err codevoid.de 70 i case '\0': Err codevoid.de 70 it@@ -193,6 +221,10 @@ uiselectitem(Item *entry) Err codevoid.de 70 i if (entry->raw) Err codevoid.de 70 i continue; Err codevoid.de 70 i return entry; Err codevoid.de 70 i+ case 'u': Err codevoid.de 70 i+ if (item > 0 && item <= nitems) Err codevoid.de 70 i+ printuri(dir->items[item-1], item); Err codevoid.de 70 i+ continue; Err codevoid.de 70 i case 'h': Err codevoid.de 70 i case '?': Err codevoid.de 70 i help(); Err codevoid.de 70 it@@ -205,10 +237,9 @@ uiselectitem(Item *entry) Err codevoid.de 70 i if (*buf < '0' || *buf > '9') Err codevoid.de 70 i continue; Err codevoid.de 70 i 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- } while (item < 0 || item > nitems); Err codevoid.de 70 i+ if (item > 0 && item <= nitems); Err codevoid.de 70 i+ break; Err codevoid.de 70 i+ } Err codevoid.de 70 i Err codevoid.de 70 i if (item > 0) Err codevoid.de 70 i return dir->items[item-1]; Err codevoid.de 70 .