diff options
author | Luuk van Baal <luukvbaal@gmail.com> | 2023-05-19 16:14:41 +0200 |
---|---|---|
committer | Luuk van Baal <luukvbaal@gmail.com> | 2023-05-19 18:42:23 +0200 |
commit | 02ef104d5bcd40c048e8011e0106f30389034674 (patch) | |
tree | 5ba08df6ef84cc955a38a552a8d77d9aad0214c8 | |
parent | 4c05b1a6ab32880bcc556cf4bf67f1f3edf0c480 (diff) | |
download | rneovim-02ef104d5bcd40c048e8011e0106f30389034674.tar.gz rneovim-02ef104d5bcd40c048e8011e0106f30389034674.tar.bz2 rneovim-02ef104d5bcd40c048e8011e0106f30389034674.zip |
vim-patch:9.0.1564: display moves up and down with 'incsearch' and 'smoothscroll'
Problem: Display moves up and down with 'incsearch' and 'smoothscroll'.
Solution: Do not check if w_skipcol changed. (Luuk van Baal, closes vim/vim#12410,
closes vim/vim#12409)
https://github.com/vim/vim/commit/0222c2d103ad9298bec4dc8864cd80b4e7559db1
-rw-r--r-- | src/nvim/move.c | 5 | ||||
-rw-r--r-- | test/functional/legacy/scroll_opt_spec.lua | 35 |
2 files changed, 34 insertions, 6 deletions
diff --git a/src/nvim/move.c b/src/nvim/move.c index ead2b3b0d3..c9b7ba4ae0 100644 --- a/src/nvim/move.c +++ b/src/nvim/move.c @@ -248,7 +248,6 @@ void update_topline(win_T *wp) } linenr_T old_topline = wp->w_topline; - colnr_T old_skipcol = wp->w_skipcol; int old_topfill = wp->w_topfill; // If the buffer is empty, always set topline to 1. @@ -413,8 +412,8 @@ void update_topline(win_T *wp) dollar_vcol = -1; redraw_later(wp, UPD_VALID); - // Only reset w_skipcol if it was not just set to make cursor visible. - if (wp->w_skipcol == old_skipcol) { + // When 'smoothscroll' is not set, should reset w_skipcol. + if (!wp->w_p_sms) { reset_skipcol(wp); } diff --git a/test/functional/legacy/scroll_opt_spec.lua b/test/functional/legacy/scroll_opt_spec.lua index 838ada4006..056262939b 100644 --- a/test/functional/legacy/scroll_opt_spec.lua +++ b/test/functional/legacy/scroll_opt_spec.lua @@ -422,12 +422,41 @@ describe('smoothscroll', function() | ]]) feed('j') - screen:expect_unchanged() + screen:expect([[ + Line with some text with some text with | + some text with some text with some text | + with some text with some text | + ^Line with some text with some text with | + some text with some text with some text | + with some text with some text | + @ | + | + ]]) -- moving cursor down - whole bottom line shows feed('<C-E>j') - screen:expect_unchanged() + screen:expect([[ + <<<h some text with some text | + Line with some text with some text with | + some text with some text with some text | + with some text with some text | + ^Line with some text with some text with | + some text with some text with some text | + with some text with some text | + | + ]]) feed('G') - screen:expect_unchanged() + -- FIXME: different from vim onwards, this had in incorrect cursor position + -- in vim but we show an eob line. + screen:expect([[ + <<<h some text with some text | + Line with some text with some text with | + some text with some text with some text | + with some text with some text | + Line with some text with some text with | + some text with some text with some text | + ^with some text with some text | + | + ]]) -- moving cursor up right after the >>> marker - no need to show whole line feed('2gj3l2k') screen:expect([[ |