diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2023-07-03 16:47:44 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2023-07-03 16:47:44 +0000 |
commit | b7e729e6010cb363ef1756892d6e1da11d4fee7f (patch) | |
tree | 9e15ea1e6885798d1eb0746011bd321c26566c24 /usr.bin/tmux/input.c | |
parent | f4f05866033ff893219ed429eadc7e541edd13d1 (diff) |
Add support for marking lines with a shell prompt based on the OSC 133
extension, from Munif Tanjim in GitHub issue 3596.
Diffstat (limited to 'usr.bin/tmux/input.c')
-rw-r--r-- | usr.bin/tmux/input.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/usr.bin/tmux/input.c b/usr.bin/tmux/input.c index ebb3847dccf..fcc9b260ad7 100644 --- a/usr.bin/tmux/input.c +++ b/usr.bin/tmux/input.c @@ -1,4 +1,4 @@ -/* $OpenBSD: input.c,v 1.216 2023/06/30 13:19:32 nicm Exp $ */ +/* $OpenBSD: input.c,v 1.217 2023/07/03 16:47:43 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -144,6 +144,7 @@ static void input_osc_104(struct input_ctx *, const char *); static void input_osc_110(struct input_ctx *, const char *); static void input_osc_111(struct input_ctx *, const char *); static void input_osc_112(struct input_ctx *, const char *); +static void input_osc_133(struct input_ctx *, const char *); /* Transition entry/exit handlers. */ static void input_clear(struct input_ctx *); @@ -2347,6 +2348,9 @@ input_exit_osc(struct input_ctx *ictx) case 112: input_osc_112(ictx, p); break; + case 133: + input_osc_133(ictx, p); + break; default: log_debug("%s: unknown '%u'", __func__, option); break; @@ -2736,6 +2740,24 @@ input_osc_112(struct input_ctx *ictx, const char *p) screen_set_cursor_colour(ictx->ctx.s, -1); } +/* Handle the OSC 133 sequence. */ +static void +input_osc_133(struct input_ctx *ictx, const char *p) +{ + struct grid *gd = ictx->ctx.s->grid; + u_int line = ictx->ctx.s->cy + gd->hsize; + struct grid_line *gl; + + if (line > gd->hsize + gd->sy - 1) + return; + gl = grid_get_line(gd, line); + + switch (*p) { + case 'A': + gl->flags |= GRID_LINE_START_PROMPT; + break; + } +} /* Handle the OSC 52 sequence for setting the clipboard. */ static void |