diff options
author | 2020-10-05 09:53:01 +0000 | |
---|---|---|
committer | 2020-10-05 09:53:01 +0000 | |
commit | e9a14db2d1c01199fab6d558dd73606b30065f78 (patch) | |
tree | 240b997a771f717d11991b926a45c5c2c0ec5498 | |
parent | Remove redundant code and lets code looks similar (diff) | |
download | wireguard-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.1 | 8 | ||||
-rw-r--r-- | usr.bin/tmux/tmux.h | 4 | ||||
-rw-r--r-- | usr.bin/tmux/tty-features.c | 5 | ||||
-rw-r--r-- | usr.bin/tmux/tty-term.c | 4 | ||||
-rw-r--r-- | usr.bin/tmux/tty.c | 34 |
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; } |