tMerge branch 'master' of git://bitreich.org/sacc - sacc - [fork] customized bu… | |
git clone git://src.adamsgaard.dk/sacc | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 7357ad79b8d43834396c672d632506c18c0952fb | |
parent 1aeb110cd8997892b0579c54cf8ac064caa36b2f | |
Author: Anders Damsgaard <[email protected]> | |
Date: Wed, 6 Jan 2021 09:13:08 +0100 | |
Merge branch 'master' of git://bitreich.org/sacc | |
Diffstat: | |
M sacc.1 | 6 ++++++ | |
M sacc.c | 12 +++++++++--- | |
M ui_ti.c | 12 ++++-------- | |
3 files changed, 19 insertions(+), 11 deletions(-) | |
--- | |
diff --git a/sacc.1 b/sacc.1 | |
t@@ -75,6 +75,12 @@ Show the help message of shortcuts. | |
.TP | |
.B ^D or q | |
Exit sacc. | |
+.SH ENVIRONMENT | |
+Sacc will use the pager set in the | |
+.B PAGER | |
+variable to display textual content. | |
+Note that sacc takes back control of the screen | |
+as soon as the pager finishes. | |
.SH PLUMBER | |
When some file is opened | |
.I sacc | |
diff --git a/sacc.c b/sacc.c | |
t@@ -110,12 +110,18 @@ mbsprint(const char *s, size_t len) | |
slen = strlen(s); | |
for (i = 0; i < slen; i += rl) { | |
- if ((rl = mbtowc(&wc, s + i, slen - i < 4 ? slen - i : 4)) <= … | |
- break; | |
+ rl = mbtowc(&wc, s + i, slen - i < 4 ? slen - i : 4); | |
+ if (rl == -1) { | |
+ mbtowc(NULL, NULL, 0); /* reset state */ | |
+ fputs("\xef\xbf\xbd", stdout); /* replacement characte… | |
+ col++; | |
+ rl = 1; | |
+ continue; | |
+ } | |
if ((w = wcwidth(wc)) == -1) | |
continue; | |
if (col + w > len || (col + w == len && s[i + rl])) { | |
- fputs("\xe2\x80\xa6", stdout); | |
+ fputs("\xe2\x80\xa6", stdout); /* ellipsis */ | |
col++; | |
break; | |
} | |
diff --git a/ui_ti.c b/ui_ti.c | |
t@@ -66,8 +66,7 @@ uiprompt(char *fmt, ...) | |
n = mbsprint(bufout, columns); | |
putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
- if (n < columns) | |
- printf("%*s", columns - n, " "); | |
+ putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
putp(tparm(cursor_address, lines-1, n, 0, 0, 0, 0, 0, 0, 0)); | |
t@@ -159,8 +158,7 @@ uistatus(char *fmt, ...) | |
n = mbsprint(bufout, columns); | |
putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
- if (n < columns) | |
- printf("%*s", columns - n, " "); | |
+ putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
putp(tparm(restore_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
fflush(stdout); | |
t@@ -190,8 +188,7 @@ displaystatus(Item *item) | |
bufout[sizeof(bufout)-1] = '\0'; | |
n = mbsprint(bufout, columns); | |
putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
- if (n < columns) | |
- printf("%*s", columns - n, " "); | |
+ putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
putp(tparm(restore_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
fflush(stdout); | |
t@@ -253,8 +250,7 @@ displayuri(Item *item) | |
itemuri(item); | |
n = mbsprint(bufout, columns); | |
putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
- if (n < columns) | |
- printf("%*s", columns - n, " "); | |
+ putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
putp(tparm(restore_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0)); | |
fflush(stdout); |