diff options
author | nicm <nicm> | 2017-03-22 07:16:54 +0000 |
---|---|---|
committer | nicm <nicm> | 2017-03-22 07:16:54 +0000 |
commit | df3ab87964fc52c6f44b2bbe014c8bec202d0528 (patch) | |
tree | 18acb5eb18fa51e177d47eb5e0e828e0322a69ee /attributes.c | |
parent | 04e17a7e110bb0c70bc917b340aedd94fa60891f (diff) | |
download | rtmux-df3ab87964fc52c6f44b2bbe014c8bec202d0528.tar.gz rtmux-df3ab87964fc52c6f44b2bbe014c8bec202d0528.tar.bz2 rtmux-df3ab87964fc52c6f44b2bbe014c8bec202d0528.zip |
Add support for the strikethrough attribute (SGR 9), using the new smxx
terminfo capability. This means there are now nine attribute bits, so
anything above 0xff uses an extended cell.
Diffstat (limited to 'attributes.c')
-rw-r--r-- | attributes.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/attributes.c b/attributes.c index 046cdcc5..1e45e584 100644 --- a/attributes.c +++ b/attributes.c @@ -23,7 +23,7 @@ #include "tmux.h" const char * -attributes_tostring(u_char attr) +attributes_tostring(int attr) { static char buf[128]; size_t len; @@ -31,14 +31,15 @@ attributes_tostring(u_char attr) if (attr == 0) return ("none"); - len = xsnprintf(buf, sizeof buf, "%s%s%s%s%s%s%s", + len = xsnprintf(buf, sizeof buf, "%s%s%s%s%s%s%s%s", (attr & GRID_ATTR_BRIGHT) ? "bright," : "", (attr & GRID_ATTR_DIM) ? "dim," : "", (attr & GRID_ATTR_UNDERSCORE) ? "underscore," : "", (attr & GRID_ATTR_BLINK)? "blink," : "", (attr & GRID_ATTR_REVERSE) ? "reverse," : "", (attr & GRID_ATTR_HIDDEN) ? "hidden," : "", - (attr & GRID_ATTR_ITALICS) ? "italics," : ""); + (attr & GRID_ATTR_ITALICS) ? "italics," : "", + (attr & GRID_ATTR_STRIKETHROUGH) ? "strikethrough," : ""); if (len > 0) buf[len - 1] = '\0'; @@ -49,7 +50,7 @@ int attributes_fromstring(const char *str) { const char delimiters[] = " ,|"; - u_char attr; + int attr; size_t end; if (*str == '\0' || strcspn(str, delimiters) == 0) @@ -78,6 +79,8 @@ attributes_fromstring(const char *str) attr |= GRID_ATTR_HIDDEN; else if (end == 7 && strncasecmp(str, "italics", end) == 0) attr |= GRID_ATTR_ITALICS; + else if (end == 13 && strncasecmp(str, "strikethrough", end) == 0) + attr |= GRID_ATTR_STRIKETHROUGH; else return (-1); str += end + strspn(str + end, delimiters); |