diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-07-28 11:24:32 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-07-28 11:38:02 +0800 |
commit | 394d65494aead6ee07298e19d53c99603b11471d (patch) | |
tree | fe2fd5cbab2c322cbd3a8f6fdbe248f4b18ad42a /src/nvim/window.c | |
parent | 8e67af1b201adfca9f6c3589b4f7c59b323e9459 (diff) | |
download | rneovim-394d65494aead6ee07298e19d53c99603b11471d.tar.gz rneovim-394d65494aead6ee07298e19d53c99603b11471d.tar.bz2 rneovim-394d65494aead6ee07298e19d53c99603b11471d.zip |
vim-patch:partial:9.0.0077: wrong restored cursor position when switching window in autocmd
Problem: When switching window in autocmd the restored cursor position may
be wrong.
Solution: Do not restore the cursor if it was not set. (closes vim/vim#10775)
https://github.com/vim/vim/commit/b03950fafa07e8b8d975eeb345ad08b8b62e67ce
This patch cannot be fully ported because it depends on patch 8.2.3518.
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r-- | src/nvim/window.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c index 09125e13c8..a825a77f5f 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -6901,11 +6901,14 @@ void reset_lnums(void) { FOR_ALL_TAB_WINDOWS(tp, wp) { if (wp->w_buffer == curbuf) { - // Restore the value if the autocommand didn't change it. - if (equalpos(wp->w_save_cursor.w_cursor_corr, wp->w_cursor)) { + // Restore the value if the autocommand didn't change it and it was + // set. + if (equalpos(wp->w_save_cursor.w_cursor_corr, wp->w_cursor) + && wp->w_save_cursor.w_cursor_save.lnum != 0) { wp->w_cursor = wp->w_save_cursor.w_cursor_save; } - if (wp->w_save_cursor.w_topline_corr == wp->w_topline) { + if (wp->w_save_cursor.w_topline_corr == wp->w_topline + && wp->w_save_cursor.w_topline_save != 0) { wp->w_topline = wp->w_save_cursor.w_topline_save; } } |