forked from aniani/vim
patch 9.1.0617: Cursor moves beyond first line of folded end of buffer
Problem: Cursor moves beyond start of a folded range at the end of a buffer. Solution: Move cursor to start of fold when going beyond end of buffer. Check that cursor moved to detect FAIL in outer cursor function. (Luuk van Baal) closes: #15344 Signed-off-by: Luuk van Baal <luukvbaal@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
eb4b903c9b
commit
dc373d456b
@@ -2849,7 +2849,6 @@ cursor_down_inner(win_T *wp, long n)
|
||||
// count each sequence of folded lines as one logical line
|
||||
while (n--)
|
||||
{
|
||||
// Move to last line of fold, will fail if it's the end-of-file.
|
||||
if (hasFoldingWin(wp, lnum, NULL, &last, TRUE, NULL))
|
||||
lnum = last + 1;
|
||||
else
|
||||
@@ -2877,8 +2876,11 @@ cursor_down(
|
||||
{
|
||||
linenr_T lnum = curwin->w_cursor.lnum;
|
||||
linenr_T line_count = curwin->w_buffer->b_ml.ml_line_count;
|
||||
// This fails if the cursor is already in the last line or would move
|
||||
// beyond the last line and '-' is in 'cpoptions'
|
||||
// This fails if the cursor is already in the last (folded) line, or would
|
||||
// move beyond the last line and '-' is in 'cpoptions'.
|
||||
#ifdef FEAT_FOLDING
|
||||
hasFoldingWin(curwin, lnum, NULL, &lnum, TRUE, NULL);
|
||||
#endif
|
||||
if (n > 0
|
||||
&& (lnum >= line_count
|
||||
|| (lnum + n > line_count
|
||||
|
@@ -1914,4 +1914,18 @@ func Test_foldexpr_end_fold()
|
||||
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" Test moving cursor down to or beyond start of folded end of buffer.
|
||||
func Test_cursor_down_fold_eob()
|
||||
call setline(1, range(1, 4))
|
||||
norm Gzf2kj
|
||||
call assert_equal(2, line('.'))
|
||||
norm zojzc
|
||||
call assert_equal(3, line('.'))
|
||||
norm j
|
||||
call assert_equal(3, line('.'))
|
||||
norm k2j
|
||||
call assert_equal(4, line('.'))
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
|
@@ -704,6 +704,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
617,
|
||||
/**/
|
||||
616,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user