From 20da16737715a183a019f1072735614615b5fd1c Mon Sep 17 00:00:00 2001 From: nicm Date: Fri, 11 Nov 2022 08:44:11 +0000 Subject: [PATCH] Tweak previous to set and log the feature instead of just setting the flag. --- tty-features.c | 2 +- tty-keys.c | 29 ++++++++++++++++------------- tty-term.c | 3 +++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/tty-features.c b/tty-features.c index b1268827..3f4fdbfd 100644 --- a/tty-features.c +++ b/tty-features.c @@ -343,7 +343,7 @@ static const char *const tty_feature_sixel_capabilities[] = { static const struct tty_feature tty_feature_sixel = { "sixel", tty_feature_sixel_capabilities, - 0 + TERM_SIXEL }; /* Available terminal features. */ diff --git a/tty-keys.c b/tty-keys.c index 65294ba8..6fe121f0 100644 --- a/tty-keys.c +++ b/tty-keys.c @@ -1256,6 +1256,7 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, size_t *size) { struct client *c = tty->client; + int *features = &c->term_features; u_int i, n = 0; char tmp[128], *endptr, p[32] = { 0 }, *cp, *next; @@ -1305,11 +1306,11 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, case 62: /* VT220 */ case 63: /* VT320 */ case 64: /* VT420 */ - for (i = 1; i < n; i++) { - log_debug("%s: DA feature: %d", c->name, p[i]); - if (p[i] == 4) - tty->term->flags |= TERM_SIXEL; - } + for (i = 1; i < n; i++) { + log_debug("%s: DA feature: %d", c->name, p[i]); + if (p[i] == 4) + tty_add_features(features, "sixel", ","); + } break; } log_debug("%s: received primary DA %.*s", c->name, (int)*size, buf); @@ -1329,6 +1330,7 @@ tty_keys_device_attributes2(struct tty *tty, const char *buf, size_t len, size_t *size) { struct client *c = tty->client; + int *features = &c->term_features; u_int i, n = 0; char tmp[128], *endptr, p[32] = { 0 }, *cp, *next; @@ -1376,16 +1378,16 @@ tty_keys_device_attributes2(struct tty *tty, const char *buf, size_t len, /* Add terminal features. */ switch (p[0]) { case 41: /* VT420 */ - tty_add_features(&c->term_features, "margins,rectfill", ","); + tty_add_features(features, "margins,rectfill", ","); break; case 'M': /* mintty */ - tty_default_features(&c->term_features, "mintty", 0); + tty_default_features(features, "mintty", 0); break; case 'T': /* tmux */ - tty_default_features(&c->term_features, "tmux", 0); + tty_default_features(features, "tmux", 0); break; case 'U': /* rxvt-unicode */ - tty_default_features(&c->term_features, "rxvt-unicode", 0); + tty_default_features(features, "rxvt-unicode", 0); break; } log_debug("%s: received secondary DA %.*s", c->name, (int)*size, buf); @@ -1405,6 +1407,7 @@ tty_keys_extended_device_attributes(struct tty *tty, const char *buf, size_t len, size_t *size) { struct client *c = tty->client; + int *features = &c->term_features; u_int i; char tmp[128]; @@ -1445,13 +1448,13 @@ tty_keys_extended_device_attributes(struct tty *tty, const char *buf, /* Add terminal features. */ if (strncmp(tmp, "iTerm2 ", 7) == 0) - tty_default_features(&c->term_features, "iTerm2", 0); + tty_default_features(features, "iTerm2", 0); else if (strncmp(tmp, "tmux ", 5) == 0) - tty_default_features(&c->term_features, "tmux", 0); + tty_default_features(features, "tmux", 0); else if (strncmp(tmp, "XTerm(", 6) == 0) - tty_default_features(&c->term_features, "XTerm", 0); + tty_default_features(features, "XTerm", 0); else if (strncmp(tmp, "mintty ", 7) == 0) - tty_default_features(&c->term_features, "mintty", 0); + tty_default_features(features, "mintty", 0); log_debug("%s: received extended DA %.*s", c->name, (int)*size, buf); free(c->term_type); diff --git a/tty-term.c b/tty-term.c index 23abccf5..7998f657 100644 --- a/tty-term.c +++ b/tty-term.c @@ -454,6 +454,9 @@ tty_term_apply_overrides(struct tty_term *term) a = options_array_next(a); } + /* Log the SIXEL flag. */ + log_debug("SIXEL flag is %d", !!(term->flags & TERM_SIXEL)); + /* Update the RGB flag if the terminal has RGB colours. */ if (tty_term_has(term, TTYC_SETRGBF) && tty_term_has(term, TTYC_SETRGBB))