Add exit status on right.

This commit is contained in:
Michael Grant
2026-07-21 18:48:16 +01:00
parent bacbb4d9d8
commit 5d4d41da57
6 changed files with 90 additions and 12 deletions

10
input.c
View File

@@ -3193,13 +3193,14 @@ input_osc_112(struct input_ctx *ictx, const char *p)
/* Parse the OSC 133 D exit status. */
static int
input_osc_133_exit_status(const char *p)
input_osc_133_exit_status(const char *p, int *present)
{
const char *end;
char *copy;
const char *errstr;
long long status;
*present = 0;
if (p[1] != ';' || p[2] == '\0' || strchr(p + 2, '=') == p + 2)
return (0);
end = strchr(p + 2, ';');
@@ -3213,6 +3214,7 @@ input_osc_133_exit_status(const char *p)
free(copy);
return (0);
}
*present = 1;
status = strtonum(copy, 0, 255, &errstr);
free(copy);
if (errstr != NULL)
@@ -3270,7 +3272,7 @@ input_osc_133(struct input_ctx *ictx, const char *p)
u_int line = s->cy + gd->hsize;
struct grid_line *gl = NULL;
const char *cp;
int status;
int status, status_present;
if (line < gd->hsize + gd->sy)
gl = grid_get_line(gd, line);
@@ -3327,7 +3329,7 @@ input_osc_133(struct input_ctx *ictx, const char *p)
}
break;
case 'D':
status = input_osc_133_exit_status(p);
status = input_osc_133_exit_status(p, &status_present);
if (wp != NULL) {
wp->cmd_end_time = time(NULL);
wp->flags &= ~PANE_CMDRUNNING;
@@ -3336,6 +3338,8 @@ input_osc_133(struct input_ctx *ictx, const char *p)
}
if (gl != NULL) {
gl->flags |= GRID_LINE_END_OUTPUT;
if (status_present)
gl->flags |= GRID_LINE_END_OUTPUT_STATUS;
gl->osc133_data.out_end_col = s->cx;
gl->osc133_data.exit_status = status;
}