Patch 8.1.0174
Problem: After paging up and down fold line is wrong.
Solution: Correct the computation of w_topline and w_botline. (Hirohito
Higashi)
Files: src/move.c, src/testdir/test_fold.vim
*** ../vim-8.1.0173/src/move.c Sun Mar 4 20:06:26 2018
--- src/move.c Tue Jul 10 14:50:55 2018
***************
*** 2457,2478 ****
beginline(BL_SOL | BL_FIX);
curwin->w_valid &= ~(VALID_WCOL|VALID_WROW|VALID_VIRTCOL);
! /*
! * Avoid the screen jumping up and down when 'scrolloff' is non-zero.
! * But make sure we scroll at least one line (happens with mix of long
! * wrapping lines and non-wrapping line).
! */
! if (retval == OK && dir == FORWARD && check_top_offset())
{
! scroll_cursor_top(1, FALSE);
! if (curwin->w_topline <= old_topline
! && old_topline < curbuf->b_ml.ml_line_count)
{
! curwin->w_topline = old_topline + 1;
#ifdef FEAT_FOLDING
! (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL);
#endif
}
}
redraw_later(VALID);
--- 2457,2483 ----
beginline(BL_SOL | BL_FIX);
curwin->w_valid &= ~(VALID_WCOL|VALID_WROW|VALID_VIRTCOL);
! if (retval == OK && dir == FORWARD)
{
! // Avoid the screen jumping up and down when 'scrolloff' is non-zero.
! // But make sure we scroll at least one line (happens with mix of long
! // wrapping lines and non-wrapping line).
! if (check_top_offset())
{
! scroll_cursor_top(1, FALSE);
! if (curwin->w_topline <= old_topline
! && old_topline < curbuf->b_ml.ml_line_count)
! {
! curwin->w_topline = old_topline + 1;
#ifdef FEAT_FOLDING
! (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL);
#endif
+ }
}
+ #ifdef FEAT_FOLDING
+ else if (curwin->w_botline > curbuf->b_ml.ml_line_count)
+ (void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL);
+ #endif
}
redraw_later(VALID);
*** ../vim-8.1.0173/src/testdir/test_fold.vim Sun Nov 5 20:53:03 2017
--- src/testdir/test_fold.vim Tue Jul 10 14:50:55 2018
***************
*** 1,5 ****
--- 1,7 ----
" Test for folding
+ source view_util.vim
+
func PrepIndent(arg)
return [a:arg] + repeat(["\t".a:arg], 5)
endfu
***************
*** 648,650 ****
--- 650,676 ----
endtry
call assert_match('E492:', a)
endfunc
+
+ func Test_fold_last_line_with_pagedown()
+ enew!
+ set fdm=manual
+
+ let expect = '+-- 11 lines: 9---'
+ let content = range(1,19)
+ call append(0, content)
+ normal dd9G
+ normal zfG
+ normal zt
+ call assert_equal('9', getline(foldclosed('.')))
+ call assert_equal('19', getline(foldclosedend('.')))
+ call assert_equal(expect, ScreenLines(1, len(expect))[0])
+ call feedkeys("\<C-F>", 'xt')
+ call assert_equal(expect, ScreenLines(1, len(expect))[0])
+ call feedkeys("\<C-F>", 'xt')
+ call assert_equal(expect, ScreenLines(1, len(expect))[0])
+ call feedkeys("\<C-B>\<C-F>\<C-F>", 'xt')
+ call assert_equal(expect, ScreenLines(1, len(expect))[0])
+
+ set fdm&
+ enew!
+ endfunc
*** ../vim-8.1.0173/src/version.c Mon Jul 9 20:39:12 2018
--- src/version.c Tue Jul 10 14:52:30 2018
***************
*** 791,792 ****
--- 791,794 ----
{ /* Add new patch number below this line */
+ /**/
+ 174,
/**/
--
hundred-and-one symptoms of being an internet addict:
220. Your wife asks for sex and you tell her where to find you on IRC.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.