=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/tty-keys.c,v retrieving revision 1.125 retrieving revision 1.126 diff -u -r1.125 -r1.126 --- src/usr.bin/tmux/tty-keys.c 2020/04/17 09:06:10 1.125 +++ src/usr.bin/tmux/tty-keys.c 2020/04/20 13:25:36 1.126 @@ -1,4 +1,4 @@ -/* $OpenBSD: tty-keys.c,v 1.125 2020/04/17 09:06:10 nicm Exp $ */ +/* $OpenBSD: tty-keys.c,v 1.126 2020/04/20 13:25:36 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -1020,7 +1020,6 @@ struct client *c = tty->client; u_int i, n = 0; char tmp[64], *endptr, p[32] = { 0 }, *cp, *next; - int flags = 0; *size = 0; if (tty->flags & TTY_HAVEDA) @@ -1060,24 +1059,42 @@ n++; } - /* Set terminal flags. */ + /* Add terminal features. */ switch (p[0]) { case 41: /* VT420 */ - flags |= (TERM_DECFRA|TERM_DECSLRM); + tty_add_features(&c->term_features, + "margins," + "rectfill", + ","); break; case 'M': /* mintty */ - flags |= (TERM_256COLOURS|TERM_RGBCOLOURS); + tty_add_features(&c->term_features, + "256," + "RGB," + "title", + ","); break; - case 'T': /* tmux - new versons reply to DSR which will set RGB */ - flags |= (TERM_UTF8|TERM_256COLOURS); + case 'T': /* tmux */ + tty_add_features(&c->term_features, + "256," + "RGB," + "ccolour," + "cstyle," + "overline," + "title," + "usstyle", + ","); break; case 'U': /* rxvt-unicode */ - flags |= (TERM_UTF8); + tty_add_features(&c->term_features, + "256," + "title", + ","); break; } log_debug("%s: received secondary DA %.*s", c->name, (int)*size, buf); - tty_set_flags(tty, flags); + tty_update_features(tty); tty->flags |= TTY_HAVEDA; return (0); @@ -1094,7 +1111,6 @@ struct client *c = tty->client; u_int i; char tmp[64]; - int flags = 0; *size = 0; if (tty->flags & TTY_HAVEDSR) @@ -1125,15 +1141,31 @@ tmp[i] = '\0'; *size = 3 + i; - /* Set terminal flags. */ + /* Add terminal features. */ if (strncmp(tmp, "ITERM2 ", 7) == 0) { - flags |= (TERM_UTF8|TERM_DECSLRM|TERM_SYNC|TERM_256COLOURS| - TERM_RGBCOLOURS); - } else if (strncmp(tmp, "TMUX ", 5) == 0) - flags |= (TERM_UTF8|TERM_256COLOURS|TERM_RGBCOLOURS); + 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", + ","); + } log_debug("%s: received DSR %.*s", c->name, (int)*size, buf); - tty_set_flags(tty, flags); + tty_update_features(tty); tty->flags |= TTY_HAVEDSR; return (0);