Re: [hackers] [st][PATCH] Add support for DSR response "OK" escape sequence

From: Hiltjo Posthuma <hiltjo_AT_codemadness.org>
Date: Tue, 7 Feb 2023 19:59:23 +0100

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
> _AT_@ -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
Received on Tue Feb 07 2023 - 19:59:23 CET

This archive was generated by hypermail 2.3.0 : Tue Feb 07 2023 - 20:00:39 CET