From 79ced23e87537adfc47c594c5a5b4781693016e9 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Sat, 30 Nov 2019 14:00:28 -0500 Subject: [PATCH] added OSC to strip prompts from sent input --- src/lib/xpty.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/lib/xpty.c b/src/lib/xpty.c index a7df1d7..3434244 100644 --- a/src/lib/xpty.c +++ b/src/lib/xpty.c @@ -14,6 +14,7 @@ static View* EditView = NULL; static int Pty_Fd = -1; static bool DoScroll = 1; +static char* PromptStr = NULL; static char ReadBuf[BUFFERSZ+1] = {0}; static char ArgsBuf[BUFFERSZ+1] = {0}; static char InputBuf[BUFFERSZ+1] = {0}; @@ -77,6 +78,11 @@ static void read_osc(char c) { chdir(&ArgsBuf[2]); } + else if (ArgsBuf[0] == '0' && ArgsBuf[1] == ';') + { + free(PromptStr); + PromptStr = strdup(&ArgsBuf[2]); + } } else { @@ -250,6 +256,11 @@ void xpty_send(char* cmd) { EditView->buffer.selection.beg = EditView->buffer.point.end; EditView->buffer.selection.end = EditView->buffer.point.end; + size_t plen = strlen(PromptStr); + if (PromptStr && !strncmp(PromptStr, cmd, plen)) + { + cmd += plen; + } view_putstr(EditView, cmd); if (*cmd && cmd[strlen(cmd)-1] != '\n') { -- 2.52.0