mirror of
https://github.com/tmux/tmux.git
synced 2025-12-21 14:56:05 +00:00
Change noattr to be an explicit attribute in the style so that it works
correctly and does not delete attributes set in the style itself, GitHub issue 4713.
This commit is contained in:
@@ -31,7 +31,7 @@ attributes_tostring(int attr)
|
||||
if (attr == 0)
|
||||
return ("none");
|
||||
|
||||
len = xsnprintf(buf, sizeof buf, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
|
||||
len = xsnprintf(buf, sizeof buf, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
|
||||
(attr & GRID_ATTR_CHARSET) ? "acs," : "",
|
||||
(attr & GRID_ATTR_BRIGHT) ? "bright," : "",
|
||||
(attr & GRID_ATTR_DIM) ? "dim," : "",
|
||||
@@ -45,7 +45,8 @@ attributes_tostring(int attr)
|
||||
(attr & GRID_ATTR_UNDERSCORE_3) ? "curly-underscore," : "",
|
||||
(attr & GRID_ATTR_UNDERSCORE_4) ? "dotted-underscore," : "",
|
||||
(attr & GRID_ATTR_UNDERSCORE_5) ? "dashed-underscore," : "",
|
||||
(attr & GRID_ATTR_OVERLINE) ? "overline," : "");
|
||||
(attr & GRID_ATTR_OVERLINE) ? "overline," : "",
|
||||
(attr & GRID_ATTR_NOATTR) ? "noattr," : "");
|
||||
if (len > 0)
|
||||
buf[len - 1] = '\0';
|
||||
|
||||
|
||||
6
screen.c
6
screen.c
@@ -577,8 +577,12 @@ screen_select_cell(struct screen *s, struct grid_cell *dst,
|
||||
if (COLOUR_DEFAULT(dst->bg))
|
||||
dst->bg = src->bg;
|
||||
utf8_copy(&dst->data, &src->data);
|
||||
dst->attr = src->attr;
|
||||
dst->flags = src->flags;
|
||||
|
||||
if (dst->attr & GRID_ATTR_NOATTR)
|
||||
dst->attr |= (src->attr & GRID_ATTR_CHARSET);
|
||||
else
|
||||
dst->attr |= src->attr;
|
||||
}
|
||||
|
||||
/* Reflow wrapped lines. */
|
||||
|
||||
35
style.c
35
style.c
@@ -218,20 +218,23 @@ style_parse(struct style *sy, const struct grid_cell *base, const char *in)
|
||||
sy->gc.attr = 0;
|
||||
else if (end > 2 && strncasecmp(tmp, "no", 2) == 0) {
|
||||
if (strcmp(tmp + 2, "attr") == 0)
|
||||
value = 0xffff & ~GRID_ATTR_CHARSET;
|
||||
else if ((value = attributes_fromstring(tmp + 2)) == -1)
|
||||
goto error;
|
||||
sy->gc.attr &= ~value;
|
||||
sy->gc.attr |= GRID_ATTR_NOATTR;
|
||||
else {
|
||||
value = attributes_fromstring(tmp + 2);
|
||||
if (value == -1)
|
||||
goto error;
|
||||
sy->gc.attr &= ~value;
|
||||
}
|
||||
} else if (end > 6 && strncasecmp(tmp, "width=", 6) == 0) {
|
||||
n = strtonum(tmp + 6, 0, UINT_MAX, &errstr);
|
||||
if (errstr != NULL)
|
||||
goto error;
|
||||
sy->width = (int)n;
|
||||
n = strtonum(tmp + 6, 0, UINT_MAX, &errstr);
|
||||
if (errstr != NULL)
|
||||
goto error;
|
||||
sy->width = (int)n;
|
||||
} else if (end > 4 && strncasecmp(tmp, "pad=", 4) == 0) {
|
||||
n = strtonum(tmp + 4, 0, UINT_MAX, &errstr);
|
||||
if (errstr != NULL)
|
||||
goto error;
|
||||
sy->pad = (int)n;
|
||||
n = strtonum(tmp + 4, 0, UINT_MAX, &errstr);
|
||||
if (errstr != NULL)
|
||||
goto error;
|
||||
sy->pad = (int)n;
|
||||
} else {
|
||||
if ((value = attributes_fromstring(tmp)) == -1)
|
||||
goto error;
|
||||
@@ -344,13 +347,13 @@ style_tostring(struct style *sy)
|
||||
attributes_tostring(gc->attr));
|
||||
comma = ",";
|
||||
}
|
||||
if (sy->width >= 0) {
|
||||
xsnprintf(s + off, sizeof s - off, "%swidth=%u", comma,
|
||||
if (sy->width >= 0) {
|
||||
xsnprintf(s + off, sizeof s - off, "%swidth=%u", comma,
|
||||
sy->width);
|
||||
comma = ",";
|
||||
}
|
||||
if (sy->pad >= 0) {
|
||||
xsnprintf(s + off, sizeof s - off, "%spad=%u", comma,
|
||||
if (sy->pad >= 0) {
|
||||
xsnprintf(s + off, sizeof s - off, "%spad=%u", comma,
|
||||
sy->pad);
|
||||
comma = ",";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user