summaryrefslogtreecommitdiffstats
path: root/tty.c
diff options
context:
space:
mode:
authornicm <nicm>2018-10-18 07:57:57 +0000
committernicm <nicm>2018-10-18 07:57:57 +0000
commitbc0e527f32642cc9eb2354d1bdc033ab6beca33b (patch)
treea6b154e707a0fad14f57ba8940f76cba024e0330 /tty.c
parentf7c85f3ed8f151501fb72a1c18a48d126d89c83c (diff)
Support for extended underline styles on terminals which offer them,
enabled by adding the Smulx capability with terminal-overrides (add something like ',vte*:Smulx=\E[4\:%p1%dm'). GitHub issue 1492.
Diffstat (limited to 'tty.c')
-rw-r--r--tty.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/tty.c b/tty.c
index 5bf4a3ca..049ea017 100644
--- a/tty.c
+++ b/tty.c
@@ -1832,8 +1832,19 @@ tty_attributes(struct tty *tty, const struct grid_cell *gc,
tty_putcode(tty, TTYC_DIM);
if (changed & GRID_ATTR_ITALICS)
tty_set_italics(tty);
- if (changed & GRID_ATTR_UNDERSCORE)
- tty_putcode(tty, TTYC_SMUL);
+ if (changed & GRID_ATTR_ALL_UNDERSCORE) {
+ if ((changed & GRID_ATTR_UNDERSCORE) ||
+ !tty_term_has(tty->term, TTYC_SMULX))
+ tty_putcode(tty, TTYC_SMUL);
+ else if (changed & GRID_ATTR_UNDERSCORE_2)
+ tty_putcode1(tty, TTYC_SMULX, 2);
+ else if (changed & GRID_ATTR_UNDERSCORE_3)
+ tty_putcode1(tty, TTYC_SMULX, 3);
+ else if (changed & GRID_ATTR_UNDERSCORE_4)
+ tty_putcode1(tty, TTYC_SMULX, 4);
+ else if (changed & GRID_ATTR_UNDERSCORE_5)
+ tty_putcode1(tty, TTYC_SMULX, 5);
+ }
if (changed & GRID_ATTR_BLINK)
tty_putcode(tty, TTYC_BLINK);
if (changed & GRID_ATTR_REVERSE) {