mirror of
https://github.com/neovim/neovim.git
synced 2025-10-08 10:56:31 +00:00
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)
0222c2d103
This commit is contained in:
@@ -248,7 +248,6 @@ void update_topline(win_T *wp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
linenr_T old_topline = wp->w_topline;
|
linenr_T old_topline = wp->w_topline;
|
||||||
colnr_T old_skipcol = wp->w_skipcol;
|
|
||||||
int old_topfill = wp->w_topfill;
|
int old_topfill = wp->w_topfill;
|
||||||
|
|
||||||
// If the buffer is empty, always set topline to 1.
|
// If the buffer is empty, always set topline to 1.
|
||||||
@@ -413,8 +412,8 @@ void update_topline(win_T *wp)
|
|||||||
dollar_vcol = -1;
|
dollar_vcol = -1;
|
||||||
redraw_later(wp, UPD_VALID);
|
redraw_later(wp, UPD_VALID);
|
||||||
|
|
||||||
// Only reset w_skipcol if it was not just set to make cursor visible.
|
// When 'smoothscroll' is not set, should reset w_skipcol.
|
||||||
if (wp->w_skipcol == old_skipcol) {
|
if (!wp->w_p_sms) {
|
||||||
reset_skipcol(wp);
|
reset_skipcol(wp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -422,12 +422,41 @@ describe('smoothscroll', function()
|
|||||||
|
|
|
|
||||||
]])
|
]])
|
||||||
feed('j')
|
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
|
-- moving cursor down - whole bottom line shows
|
||||||
feed('<C-E>j')
|
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')
|
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
|
-- moving cursor up right after the >>> marker - no need to show whole line
|
||||||
feed('2gj3l2k')
|
feed('2gj3l2k')
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
|
Reference in New Issue
Block a user