On Thursday, July 27, 2017 at 12:03:48 AM UTC+9, Ozaki Kiichi wrote: > As far as I conformed, Vim hides cursor by cursor_off() right before back to > prompt. > > Collateral evidence: (I confirmed on Ubuntu 16.04) > > 1) TERM=ansi vim --clean > > 't_ve' and 't_vi' are empty > > 2) TERM=xterm vim --clean > > 't_ve' is '^[[?12l^[[?25h', 't_vi' is '^[[?25l' (both are not empty) > > 3) set TERM=ansi and 't_ve' and 't_vi': > > TERM=ansi vim --clean > :let &t_ve = "\e[?25h" > :let &t_vi = "\e[?25l" > :terminal > > then cursor may be invisible. > > 4) set TERM=xterm and 't_ve' and 't_vi' clear: > > TERM=xterm vim --clean > :set t_vi= > :terminal > > then cursor may be visible. > > > I propose this patch: > > https://gist.github.com/ichizok/9dafd126bb6f6d5f79878a18f5665e6f > > Note: `out_flush()` should not be in `if (term->tl_cursor_visible)` clause. > > There is a problem about cursor position and display in the following case: > > cursor.c (toggle cursor visibility) > > ```c > #include <stdio.h> > #include <string.h> > #include <unistd.h> > int main(int argc, char const* argv[]) > { > char *const show = "\e[?25h"; > char *const hide = "\e[?25l"; > const char *s = show; > if (argc > 1) { > if (strcmp(argv[1], "on") == 0) { > s = show; > } else if (strcmp(argv[1], "off") == 0) { > s = hide; > } else { > fprintf(stderr, "Usage: %s [on|off]\n", argv[0]); > return 1; > } > } > write(1, s, strlen(s)); > return 0; > } > ``` > > gcc -o cursor cursor.c > vim --clean -c terminal > > and execute './cursor off' on terminal buffer, then it occurs descrepancy > between cursor and input position.
Thanks your figure out this issue. I point one small problem in your patch. To avoid flicker of cursor on GUI, we should avoid calling of gui_update_cursor() when visible = TRUE. Thanks. mattn -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.