mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 05:21:10 +00:00
Pass through the aixterm bright colours if the terminal supports them (>= 16
colours).
This commit is contained in:
27
tty.c
27
tty.c
@ -1231,6 +1231,7 @@ tty_colours(struct tty *tty, const struct grid_cell *gc, u_char *attr)
|
||||
if (fg == tc->fg && bg == tc->bg &&
|
||||
((flags ^ tc->flags) & (GRID_FLAG_FG256|GRID_FLAG_BG256)) == 0)
|
||||
return;
|
||||
log_debug("fg was %hhu, now %hhu", tc->fg, fg);
|
||||
|
||||
/*
|
||||
* Is either the default colour? This is handled specially because the
|
||||
@ -1292,6 +1293,7 @@ tty_colours_fg(struct tty *tty, const struct grid_cell *gc, u_char *attr)
|
||||
{
|
||||
struct grid_cell *tc = &tty->cell;
|
||||
u_char fg = gc->fg;
|
||||
char s[32];
|
||||
|
||||
/* Is this a 256-colour colour? */
|
||||
if (gc->flags & GRID_FLAG_FG256) {
|
||||
@ -1310,6 +1312,18 @@ tty_colours_fg(struct tty *tty, const struct grid_cell *gc, u_char *attr)
|
||||
tty_reset(tty); /* turn off bold */
|
||||
}
|
||||
|
||||
/* Is this an aixterm bright colour? */
|
||||
if (fg >= 90 && fg <= 97) {
|
||||
/* 16 colour terminals or above only. */
|
||||
if (tty_term_number(tty->term, TTYC_COLORS) >= 16) {
|
||||
xsnprintf(s, sizeof s, "\033[%dm", fg);
|
||||
tty_puts(tty, s);
|
||||
goto save_fg;
|
||||
}
|
||||
fg -= 90;
|
||||
(*attr) |= GRID_ATTR_BRIGHT;
|
||||
}
|
||||
|
||||
/* Otherwise set the foreground colour. */
|
||||
tty_putcode1(tty, TTYC_SETAF, fg);
|
||||
|
||||
@ -1325,6 +1339,7 @@ tty_colours_bg(struct tty *tty, const struct grid_cell *gc)
|
||||
{
|
||||
struct grid_cell *tc = &tty->cell;
|
||||
u_char bg = gc->bg;
|
||||
char s[32];
|
||||
|
||||
/* Is this a 256-colour colour? */
|
||||
if (gc->flags & GRID_FLAG_BG256) {
|
||||
@ -1343,6 +1358,18 @@ tty_colours_bg(struct tty *tty, const struct grid_cell *gc)
|
||||
bg &= 7;
|
||||
}
|
||||
|
||||
/* Is this an aixterm bright colour? */
|
||||
if (bg >= 100 && bg <= 107) {
|
||||
/* 16 colour terminals or above only. */
|
||||
if (tty_term_number(tty->term, TTYC_COLORS) >= 16) {
|
||||
xsnprintf(s, sizeof s, "\033[%dm", bg);
|
||||
tty_puts(tty, s);
|
||||
goto save_bg;
|
||||
}
|
||||
bg -= 100;
|
||||
/* no such thing as a bold background */
|
||||
}
|
||||
|
||||
/* Otherwise set the background colour. */
|
||||
tty_putcode1(tty, TTYC_SETAB, bg);
|
||||
|
||||
|
Reference in New Issue
Block a user