osc: store column of FTCS_COMMAND_{EXECUTED,FINISHED} in row struct

This commit is contained in:
Daniel Eklöf 2022-12-08 10:46:46 +01:00
parent f8e875a7cd
commit e9607de5ae
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 16 additions and 2 deletions

4
grid.c
View file

@ -367,6 +367,8 @@ grid_row_alloc(int cols, bool initialize)
row->linebreak = false;
row->extra = NULL;
row->shell_integration.prompt_marker = false;
row->shell_integration.cmd_start = -1;
row->shell_integration.cmd_end = -1;
if (initialize) {
row->cells = xcalloc(cols, sizeof(row->cells[0]));
@ -588,6 +590,8 @@ _line_wrap(struct grid *old_grid, struct row **new_grid, struct row *row,
grid_row_reset_extra(new_row);
new_row->linebreak = false;
new_row->shell_integration.prompt_marker = false;
new_row->shell_integration.cmd_start = -1;
new_row->shell_integration.cmd_end = -1;
tll_foreach(old_grid->sixel_images, it) {
if (it->item.pos.row == *row_idx) {

10
osc.c
View file

@ -901,11 +901,17 @@ osc_dispatch(struct terminal *term)
break;
case 'C':
LOG_DBG("FTCS_COMMAND_EXECUTED");
LOG_DBG("FTCS_COMMAND_EXECUTED: %dx%d",
term->grid->cursor.point.row,
term->grid->cursor.point.col);
term->grid->cur_row->shell_integration.cmd_start = term->grid->cursor.point.col;
break;
case 'D':
LOG_DBG("FTCS_COMMAND_FINISHED");
LOG_DBG("FTCS_COMMAND_FINISHED: %dx%d",
term->grid->cursor.point.row,
term->grid->cursor.point.col);
term->grid->cur_row->shell_integration.cmd_end = term->grid->cursor.point.col;
break;
}
break;

View file

@ -1826,6 +1826,8 @@ erase_line(struct terminal *term, struct row *row)
erase_cell_range(term, row, 0, term->cols - 1);
row->linebreak = false;
row->shell_integration.prompt_marker = false;
row->shell_integration.cmd_start = -1;
row->shell_integration.cmd_end = -1;
}
void

View file

@ -123,6 +123,8 @@ struct row {
struct {
bool prompt_marker;
int cmd_start; /* Column, -1 if unset */
int cmd_end; /* Column, -1 if unset */
} shell_integration;
};