Add a Nobr terminfo capability to tell tmux the terminal does not use
authornicm <nicm@openbsd.org>
Mon, 15 Aug 2022 08:54:03 +0000 (08:54 +0000)
committernicm <nicm@openbsd.org>
Mon, 15 Aug 2022 08:54:03 +0000 (08:54 +0000)
bright colours for bold (makes a difference to how tmux applies palette
differences). From Damien Tardy-Panis in GitHub issue 3301.

usr.bin/tmux/tmux.1
usr.bin/tmux/tmux.h
usr.bin/tmux/tty-term.c
usr.bin/tmux/tty.c

index c9f28d3..38ea124 100644 (file)
@@ -1,4 +1,4 @@
-.\" $OpenBSD: tmux.1,v 1.897 2022/08/02 11:09:26 nicm Exp $
+.\" $OpenBSD: tmux.1,v 1.898 2022/08/15 08:54:03 nicm Exp $
 .\"
 .\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
 .\"
@@ -14,7 +14,7 @@
 .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
 .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: August 2 2022 $
+.Dd $Mdocdate: August 15 2022 $
 .Dt TMUX 1
 .Os
 .Sh NAME
@@ -6430,6 +6430,10 @@ These are set automatically if the
 capability is present.
 .It Em \&Hls
 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
 Tell
 .Nm
index cabf7e4..81b208d 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.1179 2022/08/02 11:09:26 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.1180 2022/08/15 08:54:03 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -514,6 +514,7 @@ enum tty_code_code {
        TTYC_KUP6,
        TTYC_KUP7,
        TTYC_MS,
+       TTYC_NOBR,
        TTYC_OL,
        TTYC_OP,
        TTYC_RECT,
index 197c50f..1f100e9 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty-term.c,v 1.93 2022/06/30 09:55:53 nicm Exp $ */
+/* $OpenBSD: tty-term.c,v 1.94 2022/08/15 08:54:03 nicm Exp $ */
 
 /*
  * Copyright (c) 2008 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -247,6 +247,7 @@ static const struct tty_term_code_entry tty_term_codes[] = {
        [TTYC_KUP6] = { TTYCODE_STRING, "kUP6" },
        [TTYC_KUP7] = { TTYCODE_STRING, "kUP7" },
        [TTYC_MS] = { TTYCODE_STRING, "Ms" },
+       [TTYC_NOBR] = { TTYCODE_STRING, "Nobr" },
        [TTYC_OL] = { TTYCODE_STRING, "ol" },
        [TTYC_OP] = { TTYCODE_STRING, "op" },
        [TTYC_RECT] = { TTYCODE_STRING, "Rect" },
index 4077b9a..77ffddb 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty.c,v 1.423 2022/08/02 11:09:26 nicm Exp $ */
+/* $OpenBSD: tty.c,v 1.424 2022/08/15 08:54:03 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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
-        * attribute is set, use the bright entry in the palette by changing to
-        * the aixterm colour.
+        * attribute is set and Nobr is not present, use the bright entry in
+        * the palette by changing to the aixterm colour
         */
        if (~gc->flags & GRID_FLAG_NOPALETTE) {
                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;
                if ((c = colour_palette_get(palette, c)) != -1)
                        gc->fg = c;