summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2020-10-05 09:53:01 +0000
committernicm <nicm@openbsd.org>2020-10-05 09:53:01 +0000
commite9a14db2d1c01199fab6d558dd73606b30065f78 (patch)
tree240b997a771f717d11991b926a45c5c2c0ec5498
parentRemove redundant code and lets code looks similar (diff)
downloadwireguard-openbsd-e9a14db2d1c01199fab6d558dd73606b30065f78.tar.xz
wireguard-openbsd-e9a14db2d1c01199fab6d558dd73606b30065f78.zip
Use the setal capability as well as (tmux's) Setulc.
-rw-r--r--usr.bin/tmux/tmux.18
-rw-r--r--usr.bin/tmux/tmux.h4
-rw-r--r--usr.bin/tmux/tty-features.c5
-rw-r--r--usr.bin/tmux/tty-term.c4
-rw-r--r--usr.bin/tmux/tty.c34
5 files changed, 37 insertions, 18 deletions
diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1
index ba1dbd4ffba..9b19d24dfeb 100644
--- a/usr.bin/tmux/tmux.1
+++ b/usr.bin/tmux/tmux.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: tmux.1,v 1.796 2020/09/22 15:45:20 nicm Exp $
+.\" $OpenBSD: tmux.1,v 1.797 2020/10/05 09:53:01 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: September 22 2020 $
+.Dd $Mdocdate: October 5 2020 $
.Dt TMUX 1
.Os
.Sh NAME
@@ -5897,8 +5897,8 @@ Set a styled underscore.
The single parameter is one of: 0 for no underscore, 1 for normal
underscore, 2 for double underscore, 3 for curly underscore, 4 for dotted
underscore and 5 for dashed underscore.
-.It Em \&Setulc
-Set the underscore colour.
+.It Em \&Setulc , \&ol
+Set the underscore colour or reset to the default.
The argument is (red * 65536) + (green * 256) + blue where each is between 0
and 255.
.It Em \&Ss , Se
diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h
index 2be79db5500..3f405b28737 100644
--- a/usr.bin/tmux/tmux.h
+++ b/usr.bin/tmux/tmux.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.1078 2020/09/22 05:23:34 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.1079 2020/10/05 09:53:01 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -448,6 +448,7 @@ enum tty_code_code {
TTYC_KUP6,
TTYC_KUP7,
TTYC_MS,
+ TTYC_OL,
TTYC_OP,
TTYC_REV,
TTYC_RGB,
@@ -459,6 +460,7 @@ enum tty_code_code {
TTYC_SE,
TTYC_SETAB,
TTYC_SETAF,
+ TTYC_SETAL,
TTYC_SETRGBB,
TTYC_SETRGBF,
TTYC_SETULC,
diff --git a/usr.bin/tmux/tty-features.c b/usr.bin/tmux/tty-features.c
index fb69aad9b93..8e1a0d25b9e 100644
--- a/usr.bin/tmux/tty-features.c
+++ b/usr.bin/tmux/tty-features.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty-features.c,v 1.17 2020/07/18 02:53:47 daniel Exp $ */
+/* $OpenBSD: tty-features.c,v 1.18 2020/10/05 09:53:01 nicm Exp $ */
/*
* Copyright (c) 2020 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -112,6 +112,7 @@ static const struct tty_feature tty_feature_overline = {
static const char *tty_feature_usstyle_capabilities[] = {
"Smulx=\\E[4::%p1%dm",
"Setulc=\\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m",
+ "ol=\\E[59m",
NULL
};
static const struct tty_feature tty_feature_usstyle = {
@@ -336,7 +337,7 @@ tty_default_features(int *feat, const char *name, u_int version)
"256,RGB,bpaste,clipboard,strikethrough,title"
{ .name = "mintty",
.features = TTY_FEATURES_BASE_MODERN_XTERM
- ",ccolour,cstyle,extkeys,margins,overline"
+ ",ccolour,cstyle,extkeys,margins,overline,usstyle"
},
{ .name = "tmux",
.features = TTY_FEATURES_BASE_MODERN_XTERM
diff --git a/usr.bin/tmux/tty-term.c b/usr.bin/tmux/tty-term.c
index 26688ea071b..e7b7f620799 100644
--- a/usr.bin/tmux/tty-term.c
+++ b/usr.bin/tmux/tty-term.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty-term.c,v 1.83 2020/08/24 05:22:28 nicm Exp $ */
+/* $OpenBSD: tty-term.c,v 1.84 2020/10/05 09:53:01 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -245,6 +245,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_OL] = { TTYCODE_STRING, "ol" },
[TTYC_OP] = { TTYCODE_STRING, "op" },
[TTYC_REV] = { TTYCODE_STRING, "rev" },
[TTYC_RGB] = { TTYCODE_FLAG, "RGB" },
@@ -255,6 +256,7 @@ static const struct tty_term_code_entry tty_term_codes[] = {
[TTYC_RMKX] = { TTYCODE_STRING, "rmkx" },
[TTYC_SETAB] = { TTYCODE_STRING, "setab" },
[TTYC_SETAF] = { TTYCODE_STRING, "setaf" },
+ [TTYC_SETAL] = { TTYCODE_STRING, "setal" },
[TTYC_SETRGBB] = { TTYCODE_STRING, "setrgbb" },
[TTYC_SETRGBF] = { TTYCODE_STRING, "setrgbf" },
[TTYC_SETULC] = { TTYCODE_STRING, "Setulc" },
diff --git a/usr.bin/tmux/tty.c b/usr.bin/tmux/tty.c
index bf64150f22c..2d84b7a23ad 100644
--- a/usr.bin/tmux/tty.c
+++ b/usr.bin/tmux/tty.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty.c,v 1.384 2020/09/02 17:19:58 nicm Exp $ */
+/* $OpenBSD: tty.c,v 1.385 2020/10/05 09:53:01 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -2543,7 +2543,7 @@ tty_colours_fg(struct tty *tty, const struct grid_cell *gc)
/* Is this a 24-bit or 256-colour colour? */
if (gc->fg & COLOUR_FLAG_RGB || gc->fg & COLOUR_FLAG_256) {
if (tty_try_colour(tty, gc->fg, "38") == 0)
- goto save_fg;
+ goto save;
/* Should not get here, already converted in tty_check_fg. */
return;
}
@@ -2555,13 +2555,13 @@ tty_colours_fg(struct tty *tty, const struct grid_cell *gc)
tty_puts(tty, s);
} else
tty_putcode1(tty, TTYC_SETAF, gc->fg - 90 + 8);
- goto save_fg;
+ goto save;
}
/* Otherwise set the foreground colour. */
tty_putcode1(tty, TTYC_SETAF, gc->fg);
-save_fg:
+save:
/* Save the new values in the terminal current cell. */
tc->fg = gc->fg;
}
@@ -2575,7 +2575,7 @@ tty_colours_bg(struct tty *tty, const struct grid_cell *gc)
/* Is this a 24-bit or 256-colour colour? */
if (gc->bg & COLOUR_FLAG_RGB || gc->bg & COLOUR_FLAG_256) {
if (tty_try_colour(tty, gc->bg, "48") == 0)
- goto save_bg;
+ goto save;
/* Should not get here, already converted in tty_check_bg. */
return;
}
@@ -2587,13 +2587,13 @@ tty_colours_bg(struct tty *tty, const struct grid_cell *gc)
tty_puts(tty, s);
} else
tty_putcode1(tty, TTYC_SETAB, gc->bg - 90 + 8);
- goto save_bg;
+ goto save;
}
/* Otherwise set the background colour. */
tty_putcode1(tty, TTYC_SETAB, gc->bg);
-save_bg:
+save:
/* Save the new values in the terminal current cell. */
tc->bg = gc->bg;
}
@@ -2605,20 +2605,34 @@ tty_colours_us(struct tty *tty, const struct grid_cell *gc)
u_int c;
u_char r, g, b;
+ /* Clear underline colour. */
+ if (gc->us == 0) {
+ tty_putcode(tty, TTYC_OL);
+ goto save;
+ }
+
/* Must be an RGB colour - this should never happen. */
if (~gc->us & COLOUR_FLAG_RGB)
return;
/*
- * Setulc follows the ncurses(3) one argument "direct colour"
+ * Setulc and setal follows the ncurses(3) one argument "direct colour"
* capability format. Calculate the colour value.
*/
colour_split_rgb(gc->us, &r, &g, &b);
c = (65536 * r) + (256 * g) + b;
- /* Write the colour. */
- tty_putcode1(tty, TTYC_SETULC, c);
+ /*
+ * Write the colour. Only use setal if the RGB flag is set because the
+ * non-RGB version may be wrong.
+ */
+ if (tty_term_has(tty->term, TTYC_SETULC))
+ tty_putcode1(tty, TTYC_SETULC, c);
+ else if (tty_term_has(tty->term, TTYC_SETAL) &&
+ tty_term_has(tty->term, TTYC_RGB))
+ tty_putcode1(tty, TTYC_SETAL, c);
+save:
/* Save the new values in the terminal current cell. */
tc->us = gc->us;
}