From ad3e6ff0544c724ac115fbf1761ff0e72a2137bc Mon Sep 17 00:00:00 2001 From: nicm Date: Fri, 20 Jun 2025 14:54:33 +0000 Subject: [PATCH] Add noattr and use in mode-style to allow whether attributes are ignored or used to be configured. GitHub issue 4498. --- options-table.c | 2 +- screen.c | 3 +-- style.c | 4 +++- tmux.1 | 2 ++ 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/options-table.c b/options-table.c index a9f64291..aca75332 100644 --- a/options-table.c +++ b/options-table.c @@ -1103,7 +1103,7 @@ const struct options_table_entry options_table[] = { .type = OPTIONS_TABLE_STRING, .scope = OPTIONS_TABLE_WINDOW, .flags = OPTIONS_TABLE_IS_STYLE, - .default_str = "bg=yellow,fg=black", + .default_str = "noattr,bg=yellow,fg=black", .separator = ",", .text = "Style of indicators and highlighting in modes." }, diff --git a/screen.c b/screen.c index 03d120b4..626356b3 100644 --- a/screen.c +++ b/screen.c @@ -577,8 +577,7 @@ 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 = dst->attr & ~GRID_ATTR_CHARSET; - dst->attr |= src->attr & GRID_ATTR_CHARSET; + dst->attr = src->attr; dst->flags = src->flags; } diff --git a/style.c b/style.c index 4e4f6fcc..ef3bb225 100644 --- a/style.c +++ b/style.c @@ -217,7 +217,9 @@ style_parse(struct style *sy, const struct grid_cell *base, const char *in) } else if (strcasecmp(tmp, "none") == 0) sy->gc.attr = 0; else if (end > 2 && strncasecmp(tmp, "no", 2) == 0) { - if ((value = attributes_fromstring(tmp + 2)) == -1) + 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; } else if (end > 6 && strncasecmp(tmp, "width=", 6) == 0) { diff --git a/tmux.1 b/tmux.1 index 23bb5fe3..699f53a7 100644 --- a/tmux.1 +++ b/tmux.1 @@ -6305,6 +6305,8 @@ and .Ic list=right-marker mark the text to be used to mark that text has been trimmed from the left or right of the list if there is not enough space. +.It Ic noattr +Do not copy attributes from the default style. .It Xo Ic push-default , .Ic pop-default .Xc