From 841e5f0e50a65bc4787ba06a642355cf4fb514a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sat, 13 Feb 2021 12:34:11 +0100 Subject: [PATCH] terminal: add OSC-8 state tracking to the VT sub-struct --- terminal.c | 6 ++++++ terminal.h | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/terminal.c b/terminal.c index 17b985a8..28c061ca 100644 --- a/terminal.c +++ b/terminal.c @@ -1102,6 +1102,9 @@ term_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper, .blink = {.fd = -1}, .vt = { .state = 0, /* STATE_GROUND */ + .osc8 = { + .begin = {-1, -1}, + }, }, .colors = { .fg = conf->colors.fg, @@ -1645,6 +1648,9 @@ term_reset(struct terminal *term, bool hard) free(term->vt.osc.data); memset(&term->vt, 0, sizeof(term->vt)); term->vt.state = 0; /* GROUND */ + term->vt.osc8.begin = (struct coord){-1, -1}; + free(term->vt.osc8.uri); + term->vt.osc8.uri = NULL; if (term->grid == &term->alt) { term->grid = &term->normal; diff --git a/terminal.h b/terminal.h index 7df92efc..3f58180b 100644 --- a/terminal.h +++ b/terminal.h @@ -155,12 +155,24 @@ struct vt { struct vt_param v[16]; uint8_t idx; } params; + uint32_t private; /* LSB=priv0, MSB=priv3 */ + + struct attributes attrs; + struct attributes saved_attrs; + struct { uint8_t *data; size_t size; size_t idx; } osc; + + /* Start coordinate for current OSC-8 URI */ + struct { + struct coord begin; + char *uri; + } osc8; + struct { uint8_t *data; size_t size; @@ -168,8 +180,6 @@ struct vt { void (*put_handler)(struct terminal *term, uint8_t c); void (*unhook_handler)(struct terminal *term); } dcs; - struct attributes attrs; - struct attributes saved_attrs; }; enum cursor_origin { ORIGIN_ABSOLUTE, ORIGIN_RELATIVE };