On Sun, Feb 05, 2023 at 06:39:24PM -0500, Adam Price wrote: > --- > VT100 defines an escape sequence [1] called Device Status Report (DSR). When > the DSR sequence received is `csi 5n`, an "OK" response `csi 0n` is returned. > This patch adds that "OK" response. > > I encountered this missing sequence when I noticed that fzf [2] would clobber > my prompt whenever completing a find. > > To test that ST doesn't currently respond to `csi 5n`, use fzf's shell > extension in ST's repo to complete the path for a file. > > my-fancy-prompt $ vim **<tab> > <select a file> > st.c > > Select a file with <enter>, and notice that fzf clobbers some or all of your > prompt. > > After applying this patch, do the same test as above and notice that fzf has > no > longer clobbered your prompt by placing the file name in the correct position > in your command. > > my-fancy-prompt $ vim **<tab> > <select a file> > my-fancy prompt $ vim st.c > > Thank you for considering my first patch submission. > > [1] https://www.xfree86.org/current/ctlseqs.html#VT100%20Mode > [2] https://github.com/junegunn/fzf > > > st.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/st.c b/st.c > index 34c27ad..21a53cc 100644 > --- a/st.c > +++ b/st.c > @@ -1769,11 +1769,18 @@ csihandle(void) > case 'm': /* SGR -- Terminal attribute (color) */ > tsetattr(csiescseq.arg, csiescseq.narg); > break; > - case 'n': /* DSR – Device Status Report (cursor position) */ > - if (csiescseq.arg[0] == 6) { > + case 'n': /* DSR – Device Status Report */ > + switch (csiescseq.arg[0]) { > + case 5: /* Status Report "OK" `0n` */ > + ttywrite("\033[0n", sizeof("\033[0n"), 0); > + break; > + case 6: /* Report Cursor Position (CPR) `<row>;<column>R` */ > len = snprintf(buf, sizeof(buf), "\033[%i;%iR", > term.c.y+1, term.c.x+1); > ttywrite(buf, len, 0); > + break; > + default: > + goto unknown; > } > break; > case 'r': /* DECSTBM -- Set Scrolling Region */ > -- > 2.39.1 > >
Hi Adam, Thanks for the patch, I've slightly adapted the patch with input from the mailinglist and commited it. Also thanks for the reviews people! -- Kind regards, Hiltjo