term: add ‘id’ parameter to term_osc8_open()

The current OSC-8 URL’s ID is now tracked along with the URI itself,
and its starting point.
This commit is contained in:
Daniel Eklöf 2021-02-13 13:44:07 +01:00
parent ecbfc2bbe9
commit b934969b85
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 7 additions and 4 deletions

2
osc.c
View file

@ -433,7 +433,7 @@ osc_uri(struct terminal *term, char *string)
if (uri[0] == '\0')
term_osc8_close(term);
else
term_osc8_open(term, uri);
term_osc8_open(term, id, uri);
}
static void

View file

@ -3016,7 +3016,7 @@ term_ime_set_cursor_rect(struct terminal *term, int x, int y, int width,
}
void
term_osc8_open(struct terminal *term, const char *uri)
term_osc8_open(struct terminal *term, uint64_t id, const char *uri)
{
if (unlikely(term->vt.osc8.begin.row < 0)) {
/* Its valid to switch from one URI to another without
@ -3028,6 +3028,7 @@ term_osc8_open(struct terminal *term, const char *uri)
.col = term->grid->cursor.point.col,
.row = grid_row_absolute(term->grid, term->grid->cursor.point.row),
};
term->vt.osc8.id = id;
term->vt.osc8.uri = xstrdup(uri);
}
@ -3066,6 +3067,7 @@ term_osc8_close(struct terminal *term)
done:
free(term->vt.osc8.uri);
term->vt.osc8.id = 0;
term->vt.osc8.uri = NULL;
term->vt.osc8.begin = (struct coord){-1, -1};
}

View file

@ -169,8 +169,9 @@ struct vt {
/* Start coordinate for current OSC-8 URI */
struct {
struct coord begin;
uint64_t id;
char *uri;
struct coord begin;
} osc8;
struct {
@ -690,5 +691,5 @@ void term_ime_set_cursor_rect(
void term_urls_reset(struct terminal *term);
void term_collect_urls(struct terminal *term);
void term_osc8_open(struct terminal *term, const char *uri);
void term_osc8_open(struct terminal *term, uint64_t id, const char *uri);
void term_osc8_close(struct terminal *term);