1
0
forked from aniani/vim

patch 9.0.0645: CTRL-Y does not stop at line 1

Problem:    CTRL-Y does not stop at line 1. (John Marriott)
Solution:   Stop at line 1 when 'smoothscroll' is not set. (closes #11261)
This commit is contained in:
Bram Moolenaar
2022-10-03 12:11:13 +01:00
parent b1fd26d208
commit 8df9748edb
3 changed files with 21 additions and 2 deletions

View File

@@ -1485,11 +1485,14 @@ scrolldown(
else
#endif
{
if (curwin->w_topline == 1 && curwin->w_skipcol < width1)
// break when at the very top
if (curwin->w_topline == 1
&& (!curwin->w_p_sms || curwin->w_skipcol < width1))
break;
if (curwin->w_p_wrap && curwin->w_p_sms
&& curwin->w_skipcol >= width1)
&& curwin->w_skipcol >= width1)
{
// scroll a screen line down
if (curwin->w_skipcol >= width1 + width2)
curwin->w_skipcol -= width2;
else
@@ -1499,6 +1502,7 @@ scrolldown(
}
else
{
// scroll a text line down
--curwin->w_topline;
curwin->w_skipcol = 0;
#ifdef FEAT_DIFF

View File

@@ -37,6 +37,19 @@ func Test_reset_scroll()
quit!
endfunc
func Test_CtrlE_CtrlY_stop_at_end()
enew
call setline(1, ['one', 'two'])
set number
exe "normal \<C-Y>"
call assert_equal([" 1 one "], ScreenLines(1, 10))
exe "normal \<C-E>\<C-E>\<C-E>"
call assert_equal([" 2 two "], ScreenLines(1, 10))
bwipe!
set nonumber
endfunc
func Test_smoothscroll_CtrlE_CtrlY()
CheckScreendump

View File

@@ -699,6 +699,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
645,
/**/
644,
/**/