Add a Nobr terminfo capability to tell tmux the terminal does not use

bright colours for bold (makes a difference to how tmux applies palette
differences). From Damien Tardy-Panis in GitHub issue 3301.
This commit is contained in:
nicm 2022-08-15 08:54:03 +00:00
parent 497021d0db
commit 03149bf7f6
4 changed files with 11 additions and 3 deletions

4
tmux.1
View File

@ -6430,6 +6430,10 @@ These are set automatically if the
capability is present. capability is present.
.It Em \&Hls .It Em \&Hls
Set or clear a hyperlink annotation. Set or clear a hyperlink annotation.
.It Em \&Nobr
Tell
.Nm
that the terminal does not use bright colors for bold display.
.It Em \&Rect .It Em \&Rect
Tell Tell
.Nm .Nm

1
tmux.h
View File

@ -514,6 +514,7 @@ enum tty_code_code {
TTYC_KUP6, TTYC_KUP6,
TTYC_KUP7, TTYC_KUP7,
TTYC_MS, TTYC_MS,
TTYC_NOBR,
TTYC_OL, TTYC_OL,
TTYC_OP, TTYC_OP,
TTYC_RECT, TTYC_RECT,

View File

@ -247,6 +247,7 @@ static const struct tty_term_code_entry tty_term_codes[] = {
[TTYC_KUP6] = { TTYCODE_STRING, "kUP6" }, [TTYC_KUP6] = { TTYCODE_STRING, "kUP6" },
[TTYC_KUP7] = { TTYCODE_STRING, "kUP7" }, [TTYC_KUP7] = { TTYCODE_STRING, "kUP7" },
[TTYC_MS] = { TTYCODE_STRING, "Ms" }, [TTYC_MS] = { TTYCODE_STRING, "Ms" },
[TTYC_NOBR] = { TTYCODE_STRING, "Nobr" },
[TTYC_OL] = { TTYCODE_STRING, "ol" }, [TTYC_OL] = { TTYCODE_STRING, "ol" },
[TTYC_OP] = { TTYCODE_STRING, "op" }, [TTYC_OP] = { TTYCODE_STRING, "op" },
[TTYC_RECT] = { TTYCODE_STRING, "Rect" }, [TTYC_RECT] = { TTYCODE_STRING, "Rect" },

8
tty.c
View File

@ -2690,12 +2690,14 @@ tty_check_fg(struct tty *tty, struct colour_palette *palette,
/* /*
* Perform substitution if this pane has a palette. If the bright * Perform substitution if this pane has a palette. If the bright
* attribute is set, use the bright entry in the palette by changing to * attribute is set and Nobr is not present, use the bright entry in
* the aixterm colour. * the palette by changing to the aixterm colour
*/ */
if (~gc->flags & GRID_FLAG_NOPALETTE) { if (~gc->flags & GRID_FLAG_NOPALETTE) {
c = gc->fg; c = gc->fg;
if (c < 8 && gc->attr & GRID_ATTR_BRIGHT) if (c < 8 &&
gc->attr & GRID_ATTR_BRIGHT &&
!tty_term_has(tty->term, TTYC_NOBR))
c += 90; c += 90;
if ((c = colour_palette_get(palette, c)) != -1) if ((c = colour_palette_get(palette, c)) != -1)
gc->fg = c; gc->fg = c;