From: Michael D. Lowis Date: Sat, 30 Nov 2019 19:00:28 +0000 (-0500) Subject: added OSC to strip prompts from sent input X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=79ced23e87537adfc47c594c5a5b4781693016e9;p=projs%2Ftide.git added OSC to strip prompts from sent input --- 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') {