Compare commits

..

No commits in common. "1742138f0534d953f640308c924576dd2e189cd6" and "e7c829fc67c9b037402ad1624139de33665fb96b" have entirely different histories.

8 changed files with 21 additions and 57 deletions

View File

@ -2766,7 +2766,6 @@ server_client_dispatch(struct imsg *imsg, void *arg)
break; break;
server_client_update_latest(c); server_client_update_latest(c);
tty_resize(&c->tty); tty_resize(&c->tty);
tty_repeat_requests(&c->tty);
recalculate_sizes(); recalculate_sizes();
if (c->overlay_resize == NULL) if (c->overlay_resize == NULL)
server_client_clear_overlay(c); server_client_clear_overlay(c);

View File

@ -685,10 +685,8 @@ session_group_synchronize1(struct session *target, struct session *s)
TAILQ_INIT(&s->lastw); TAILQ_INIT(&s->lastw);
TAILQ_FOREACH(wl, &old_lastw, sentry) { TAILQ_FOREACH(wl, &old_lastw, sentry) {
wl2 = winlink_find_by_index(&s->windows, wl->idx); wl2 = winlink_find_by_index(&s->windows, wl->idx);
if (wl2 != NULL) { if (wl2 != NULL)
TAILQ_INSERT_TAIL(&s->lastw, wl2, sentry); TAILQ_INSERT_TAIL(&s->lastw, wl2, sentry);
wl2->flags |= WINLINK_VISITED;
}
} }
/* Then free the old winlinks list. */ /* Then free the old winlinks list. */

10
tmux.1
View File

@ -6805,15 +6805,9 @@ Set a styled underscore.
The single parameter is one of: 0 for no underscore, 1 for normal 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, 2 for double underscore, 3 for curly underscore, 4 for dotted
underscore and 5 for dashed underscore. underscore and 5 for dashed underscore.
.It Em \&Setulc , \&Setulc1, \&ol .It Em \&Setulc , \&ol
Set the underscore colour or reset to the default. Set the underscore colour or reset to the default.
.Em Setulc The argument is (red * 65536) + (green * 256) + blue where each is between 0
is for RGB colours and
.Em Setulc1
for ANSI or 256 colours.
The
.Em Setulc
argument is (red * 65536) + (green * 256) + blue where each is between 0
and 255. and 255.
.It Em \&Ss , Se .It Em \&Ss , Se
Set or reset the cursor style. Set or reset the cursor style.

7
tmux.h
View File

@ -545,7 +545,6 @@ enum tty_code_code {
TTYC_SETRGBB, TTYC_SETRGBB,
TTYC_SETRGBF, TTYC_SETRGBF,
TTYC_SETULC, TTYC_SETULC,
TTYC_SETULC1,
TTYC_SGR0, TTYC_SGR0,
TTYC_SITM, TTYC_SITM,
TTYC_SMACS, TTYC_SMACS,
@ -1417,7 +1416,6 @@ struct tty {
struct client *client; struct client *client;
struct event start_timer; struct event start_timer;
struct event clipboard_timer; struct event clipboard_timer;
time_t last_requests;
u_int sx; u_int sx;
u_int sy; u_int sy;
@ -1472,8 +1470,10 @@ struct tty {
#define TTY_HAVEXDA 0x200 #define TTY_HAVEXDA 0x200
#define TTY_SYNCING 0x400 #define TTY_SYNCING 0x400
#define TTY_HAVEDA2 0x800 /* Secondary DA. */ #define TTY_HAVEDA2 0x800 /* Secondary DA. */
#define TTY_HAVEFG 0x1000
#define TTY_HAVEBG 0x2000
#define TTY_ALL_REQUEST_FLAGS \ #define TTY_ALL_REQUEST_FLAGS \
(TTY_HAVEDA|TTY_HAVEDA2|TTY_HAVEXDA) (TTY_HAVEDA|TTY_HAVEDA2|TTY_HAVEXDA|TTY_HAVEFG|TTY_HAVEBG)
int flags; int flags;
struct tty_term *term; struct tty_term *term;
@ -2366,7 +2366,6 @@ void tty_resize(struct tty *);
void tty_set_size(struct tty *, u_int, u_int, u_int, u_int); void tty_set_size(struct tty *, u_int, u_int, u_int, u_int);
void tty_start_tty(struct tty *); void tty_start_tty(struct tty *);
void tty_send_requests(struct tty *); void tty_send_requests(struct tty *);
void tty_repeat_requests(struct tty *);
void tty_stop_tty(struct tty *); void tty_stop_tty(struct tty *);
void tty_set_title(struct tty *, const char *); void tty_set_title(struct tty *, const char *);
void tty_set_path(struct tty *, const char *); void tty_set_path(struct tty *, const char *);

View File

@ -155,7 +155,6 @@ static const struct tty_feature tty_feature_overline = {
static const char *const tty_feature_usstyle_capabilities[] = { static const char *const tty_feature_usstyle_capabilities[] = {
"Smulx=\\E[4::%p1%dm", "Smulx=\\E[4::%p1%dm",
"Setulc=\\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m", "Setulc=\\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m",
"Setulc1=\\E[58::5::%p1%dm",
"ol=\\E[59m", "ol=\\E[59m",
NULL NULL
}; };

View File

@ -1492,6 +1492,8 @@ tty_keys_colours(struct tty *tty, const char *buf, size_t len, size_t *size)
int n; int n;
*size = 0; *size = 0;
if ((tty->flags & TTY_HAVEFG) && (tty->flags & TTY_HAVEBG))
return (-1);
/* First four bytes are always \033]1 and 0 or 1 and ;. */ /* First four bytes are always \033]1 and 0 or 1 and ;. */
if (buf[0] != '\033') if (buf[0] != '\033')
@ -1537,9 +1539,11 @@ tty_keys_colours(struct tty *tty, const char *buf, size_t len, size_t *size)
if (n != -1 && buf[3] == '0') { if (n != -1 && buf[3] == '0') {
log_debug("%s: foreground is %s", c->name, colour_tostring(n)); log_debug("%s: foreground is %s", c->name, colour_tostring(n));
tty->fg = n; tty->fg = n;
tty->flags |= TTY_HAVEFG;
} else if (n != -1) { } else if (n != -1) {
log_debug("%s: background is %s", c->name, colour_tostring(n)); log_debug("%s: background is %s", c->name, colour_tostring(n));
tty->bg = n; tty->bg = n;
tty->flags |= TTY_HAVEBG;
} }
return (0); return (0);

View File

@ -267,7 +267,6 @@ static const struct tty_term_code_entry tty_term_codes[] = {
[TTYC_SETRGBB] = { TTYCODE_STRING, "setrgbb" }, [TTYC_SETRGBB] = { TTYCODE_STRING, "setrgbb" },
[TTYC_SETRGBF] = { TTYCODE_STRING, "setrgbf" }, [TTYC_SETRGBF] = { TTYCODE_STRING, "setrgbf" },
[TTYC_SETULC] = { TTYCODE_STRING, "Setulc" }, [TTYC_SETULC] = { TTYCODE_STRING, "Setulc" },
[TTYC_SETULC1] = { TTYCODE_STRING, "Setulc1" },
[TTYC_SE] = { TTYCODE_STRING, "Se" }, [TTYC_SE] = { TTYCODE_STRING, "Se" },
[TTYC_SXL] = { TTYCODE_FLAG, "Sxl" }, [TTYC_SXL] = { TTYCODE_FLAG, "Sxl" },
[TTYC_SGR0] = { TTYCODE_STRING, "sgr0" }, [TTYC_SGR0] = { TTYCODE_STRING, "sgr0" },

50
tty.c
View File

@ -87,7 +87,6 @@ static void tty_write_one(void (*)(struct tty *, const struct tty_ctx *),
#define TTY_BLOCK_STOP(tty) (1 + ((tty)->sx * (tty)->sy) / 8) #define TTY_BLOCK_STOP(tty) (1 + ((tty)->sx * (tty)->sy) / 8)
#define TTY_QUERY_TIMEOUT 5 #define TTY_QUERY_TIMEOUT 5
#define TTY_REQUEST_LIMIT 30
void void
tty_create_log(void) tty_create_log(void)
@ -375,29 +374,12 @@ tty_send_requests(struct tty *tty)
tty_puts(tty, "\033[>c"); tty_puts(tty, "\033[>c");
if (~tty->flags & TTY_HAVEXDA) if (~tty->flags & TTY_HAVEXDA)
tty_puts(tty, "\033[>q"); tty_puts(tty, "\033[>q");
tty_puts(tty, "\033]10;?\033\\"); if (~tty->flags & TTY_HAVEFG)
tty_puts(tty, "\033]11;?\033\\"); tty_puts(tty, "\033]10;?\033\\");
if (~tty->flags & TTY_HAVEBG)
tty_puts(tty, "\033]11;?\033\\");
} else } else
tty->flags |= TTY_ALL_REQUEST_FLAGS; tty->flags |= TTY_ALL_REQUEST_FLAGS;
tty->last_requests = time (NULL);
}
void
tty_repeat_requests(struct tty *tty)
{
time_t t = time (NULL);
if (~tty->flags & TTY_STARTED)
return;
if (t - tty->last_requests <= TTY_REQUEST_LIMIT)
return;
tty->last_requests = t;
if (tty->term->flags & TERM_VT100LIKE) {
tty_puts(tty, "\033]10;?\033\\");
tty_puts(tty, "\033]11;?\033\\");
}
} }
void void
@ -2954,13 +2936,11 @@ tty_check_us(__unused struct tty *tty, struct colour_palette *palette,
gc->us = c; gc->us = c;
} }
/* Convert underscore colour if only RGB can be supported. */ /* Underscore colour is set as RGB so convert. */
if (!tty_term_has(tty->term, TTYC_SETULC1)) { if ((c = colour_force_rgb (gc->us)) == -1)
if ((c = colour_force_rgb (gc->us)) == -1) gc->us = 8;
gc->us = 8; else
else gc->us = c;
gc->us = c;
}
} }
static void static void
@ -3040,17 +3020,9 @@ tty_colours_us(struct tty *tty, const struct grid_cell *gc)
goto save; goto save;
} }
/* /* Must be an RGB colour - this should never happen. */
* If this is not an RGB colour, use Setulc1 if it exists, otherwise if (~gc->us & COLOUR_FLAG_RGB)
* convert.
*/
if (~gc->us & COLOUR_FLAG_RGB) {
c = gc->us;
if ((~c & COLOUR_FLAG_256) && (c >= 90 && c <= 97))
c -= 82;
tty_putcode_i(tty, TTYC_SETULC1, c & ~COLOUR_FLAG_256);
return; return;
}
/* /*
* Setulc and setal follows the ncurses(3) one argument "direct colour" * Setulc and setal follows the ncurses(3) one argument "direct colour"