mirror of
https://github.com/tmux/tmux.git
synced 2024-12-12 17:38:48 +00:00
Move terminal features into a single file.
This commit is contained in:
parent
ca13208b6b
commit
8650f44340
2
format.c
2
format.c
@ -2617,6 +2617,8 @@ format_defaults_client(struct format_tree *ft, struct client *c)
|
||||
format_add(ft, "client_termname", "%s", c->term_name);
|
||||
format_add(ft, "client_termfeatures", "%s",
|
||||
tty_get_features(c->term_features));
|
||||
if (c->term_type != NULL)
|
||||
format_add(ft, "client_termtype", "%s", c->term_type);
|
||||
|
||||
format_add_tv(ft, "client_created", &c->creation_time);
|
||||
format_add_tv(ft, "client_activity", &c->activity_time);
|
||||
|
@ -294,7 +294,9 @@ server_client_lost(struct client *c)
|
||||
if (c->flags & CLIENT_TERMINAL)
|
||||
tty_free(&c->tty);
|
||||
free(c->ttyname);
|
||||
|
||||
free(c->term_name);
|
||||
free(c->term_type);
|
||||
|
||||
status_free(c);
|
||||
|
||||
|
3
tmux.1
3
tmux.1
@ -4463,7 +4463,8 @@ The following variables are available, where appropriate:
|
||||
.It Li "client_readonly" Ta "" Ta "1 if client is readonly"
|
||||
.It Li "client_session" Ta "" Ta "Name of the client's session"
|
||||
.It Li "client_termname" Ta "" Ta "Terminal name of client"
|
||||
.It Li "client_termfeatures" Ta "" Ta "Terminal features of client"
|
||||
.It Li "client_termtype" Ta "" Ta "Terminal type of client, if available"
|
||||
.It Li "client_termfeatures" Ta "" Ta "Terminal features of client, if any"
|
||||
.It Li "client_tty" Ta "" Ta "Pseudo terminal of client"
|
||||
.It Li "client_utf8" Ta "" Ta "1 if client supports UTF-8"
|
||||
.It Li "client_width" Ta "" Ta "Width of client"
|
||||
|
2
tmux.h
2
tmux.h
@ -1506,6 +1506,7 @@ struct client {
|
||||
|
||||
char *term_name;
|
||||
int term_features;
|
||||
char *term_type;
|
||||
|
||||
char *ttyname;
|
||||
struct tty tty;
|
||||
@ -2030,6 +2031,7 @@ const char *tty_term_describe(struct tty_term *, enum tty_code_code);
|
||||
void tty_add_features(int *, const char *, const char *);
|
||||
const char *tty_get_features(int);
|
||||
int tty_apply_features(struct tty_term *, int);
|
||||
void tty_default_features(int *, const char *, u_int);
|
||||
|
||||
/* tty-acs.c */
|
||||
int tty_acs_needed(struct tty *);
|
||||
|
@ -201,7 +201,7 @@ tty_add_features(int *feat, const char *s, const char *separators)
|
||||
char *next, *loop, *copy;
|
||||
u_int i;
|
||||
|
||||
log_debug("%s: %s", __func__, s);
|
||||
log_debug("adding terminal features %s", s);
|
||||
|
||||
loop = copy = xstrdup(s);
|
||||
while ((next = strsep(&loop, separators)) != NULL) {
|
||||
@ -275,3 +275,39 @@ tty_apply_features(struct tty_term *term, int feat)
|
||||
term->features |= feat;
|
||||
return (1);
|
||||
}
|
||||
|
||||
void
|
||||
tty_default_features(int *feat, const char *name, u_int version)
|
||||
{
|
||||
static struct {
|
||||
const char *name;
|
||||
u_int version;
|
||||
const char *features;
|
||||
} table[] = {
|
||||
{ .name = "mintty",
|
||||
.features = "256,RGB,ccolour,clipboard,cstyle,margins,overline,title"
|
||||
},
|
||||
{ .name = "tmux",
|
||||
.features = "256,RGB,ccolour,clipboard,cstyle,overline,title,usstyle"
|
||||
},
|
||||
{ .name = "rxvt-unicode",
|
||||
.features = "256,title"
|
||||
},
|
||||
{ .name = "iTerm2",
|
||||
.features = "256,RGB,clipboard,cstyle,margins,sync,title"
|
||||
},
|
||||
{ .name = "XTerm",
|
||||
.features = "256,RGB,ccolour,clipboard,cstyle,margins,rectfill,title"
|
||||
}
|
||||
};
|
||||
u_int i;
|
||||
|
||||
for (i = 0; i < nitems(table); i++) {
|
||||
if (strcmp(table[i].name, name) != 0)
|
||||
continue;
|
||||
if (version != 0 && version < table[i].version)
|
||||
continue;
|
||||
tty_add_features(feat, table[i].features, ",");
|
||||
}
|
||||
|
||||
}
|
||||
|
55
tty-keys.c
55
tty-keys.c
@ -1070,28 +1070,13 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len,
|
||||
",");
|
||||
break;
|
||||
case 'M': /* mintty */
|
||||
tty_add_features(&c->term_features,
|
||||
"256,"
|
||||
"RGB,"
|
||||
"title",
|
||||
",");
|
||||
tty_default_features(&c->term_features, "mintty", 0);
|
||||
break;
|
||||
case 'T': /* tmux */
|
||||
tty_add_features(&c->term_features,
|
||||
"256,"
|
||||
"RGB,"
|
||||
"ccolour,"
|
||||
"cstyle,"
|
||||
"overline,"
|
||||
"title,"
|
||||
"usstyle",
|
||||
",");
|
||||
tty_default_features(&c->term_features, "tmux", 0);
|
||||
break;
|
||||
case 'U': /* rxvt-unicode */
|
||||
tty_add_features(&c->term_features,
|
||||
"256,"
|
||||
"title",
|
||||
",");
|
||||
tty_default_features(&c->term_features, "rxvt-unicode", 0);
|
||||
break;
|
||||
}
|
||||
log_debug("%s: received secondary DA %.*s", c->name, (int)*size, buf);
|
||||
@ -1112,7 +1097,7 @@ tty_keys_extended_device_attributes(struct tty *tty, const char *buf,
|
||||
{
|
||||
struct client *c = tty->client;
|
||||
u_int i;
|
||||
char tmp[64];
|
||||
char tmp[128];
|
||||
|
||||
*size = 0;
|
||||
if (tty->flags & TTY_HAVEXDA)
|
||||
@ -1150,29 +1135,19 @@ tty_keys_extended_device_attributes(struct tty *tty, const char *buf,
|
||||
*size = 5 + i;
|
||||
|
||||
/* Add terminal features. */
|
||||
if (strncmp(tmp, "iTerm2 ", 7) == 0) {
|
||||
tty_add_features(&c->term_features,
|
||||
"256,"
|
||||
"RGB,"
|
||||
"clipboard,"
|
||||
"cstyle,"
|
||||
"margins,"
|
||||
"sync,"
|
||||
"title",
|
||||
",");
|
||||
} else if (strncmp(tmp, "tmux ", 5) == 0) {
|
||||
tty_add_features(&c->term_features,
|
||||
"256,"
|
||||
"RGB,"
|
||||
"ccolour,"
|
||||
"cstyle,"
|
||||
"overline,"
|
||||
"title,"
|
||||
"usstyle",
|
||||
",");
|
||||
}
|
||||
if (strncmp(tmp, "iTerm2 ", 7) == 0)
|
||||
tty_default_features(&c->term_features, "iTerm2", 0);
|
||||
else if (strncmp(tmp, "tmux ", 5) == 0)
|
||||
tty_default_features(&c->term_features, "tmux", 0);
|
||||
else if (strncmp(tmp, "XTerm(", 6) == 0)
|
||||
tty_default_features(&c->term_features, "xterm", 0);
|
||||
else if (strncmp(tmp, "mintty ", 7) == 0)
|
||||
tty_default_features(&c->term_features, "mintty", 0);
|
||||
log_debug("%s: received extended DA %.*s", c->name, (int)*size, buf);
|
||||
|
||||
free(c->term_type);
|
||||
c->term_type = xstrdup(tmp);
|
||||
|
||||
tty_update_features(tty);
|
||||
tty->flags |= TTY_HAVEXDA;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user