From 4eef5ac453866dae7c03f5432fc8c4dfcda19f54 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sun, 26 Mar 2023 09:24:04 +0800 Subject: vim-patch:9.0.1428: cursor in wrong position when leaving insert mode (#22786) Problem: Cursor in wrong position when leaving insert mode. Solution: Update the w_valid flags. Position the cursor also when not redrawing. (closes vim/vim#12137) https://github.com/vim/vim/commit/c174c2e58c9e24a75b189e01143e6d057b84e96e Co-authored-by: Bram Moolenaar --- src/nvim/edit.c | 1 + src/nvim/normal.c | 1 + 2 files changed, 2 insertions(+) (limited to 'src') diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 7bc71c1477..0983d025e5 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -3457,6 +3457,7 @@ static bool ins_esc(long *count, int cmdchar, bool nomove) } } else { curwin->w_cursor.col--; + curwin->w_valid &= ~(VALID_WCOL|VALID_VIRTCOL); // Correct cursor for multi-byte character. mb_adjust_cursor(); } diff --git a/src/nvim/normal.c b/src/nvim/normal.c index 605b0aee68..6ad1cbd987 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -1377,6 +1377,7 @@ static int normal_check(VimState *state) // update cursor and redraw. if (skip_redraw || exmode_active) { skip_redraw = false; + setcursor(); } else if (do_redraw || stuff_empty()) { // Ensure curwin->w_topline and curwin->w_leftcol are up to date // before triggering a WinScrolled autocommand. -- cgit