Patch 9.0.1542
Problem: Line not fully displayed if it doesn't fit in the screen.
Solution: Do not reset s_skipcol if not needed. (Luuk van Baal,
closes #12376)
Files: src/move.c, src/testdir/test_display.vim,
src/testdir/dumps/Test_display_cursor_long_line.dump
*** ../vim-9.0.1541/src/move.c 2023-05-09 16:00:59.958881540 +0100
--- src/move.c 2023-05-11 18:33:27.165576908 +0100
***************
*** 2772,2782 ****
topline = loff.lnum;
int want_height;
! int smooth_scroll = FALSE;
! if (curwin->w_p_sms && curwin->w_p_wrap)
{
// 'smoothscroll' and 'wrap' are set
- smooth_scroll = TRUE;
if (atend)
{
want_height = (curwin->w_height - used) / 2;
--- 2772,2781 ----
topline = loff.lnum;
int want_height;
! int do_sms = curwin->w_p_wrap && curwin->w_p_sms;
! if (do_sms)
{
// 'smoothscroll' and 'wrap' are set
if (atend)
{
want_height = (curwin->w_height - used) / 2;
***************
*** 2790,2796 ****
{
// If using smoothscroll, we can precisely scroll to the
// exact point where the cursor is halfway down the screen.
! if (smooth_scroll)
{
topline_back_winheight(&loff, FALSE);
if (loff.height == MAXCOL)
--- 2789,2795 ----
{
// If using smoothscroll, we can precisely scroll to the
// exact point where the cursor is halfway down the screen.
! if (do_sms)
{
topline_back_winheight(&loff, FALSE);
if (loff.height == MAXCOL)
***************
*** 2892,2898 ****
curwin->w_skipcol = skipcol;
redraw_later(UPD_NOT_VALID);
}
! else
reset_skipcol();
}
}
--- 2891,2897 ----
curwin->w_skipcol = skipcol;
redraw_later(UPD_NOT_VALID);
}
! else if (do_sms)
reset_skipcol();
}
}
*** ../vim-9.0.1541/src/testdir/test_display.vim 2023-04-30 19:15:09.285424145 +0100
--- src/testdir/test_display.vim 2023-05-11 18:33:27.165576908 +0100
***************
*** 489,492 ****
--- 489,510 ----
call StopVimInTerminal(buf)
endfunc
+ " Moving the cursor to a line that doesn't fit in the window should show
+ " correctly.
+ func Test_display_cursor_long_line()
+ CheckScreendump
+
+ let lines =<< trim END
+ call setline(1, ['a', 'bbbbb '->repeat(100), 'c'])
+ norm $j
+ END
+
+ call writefile(lines, 'XdispCursorLongline', 'D')
+ let buf = RunVimInTerminal('-S XdispCursorLongline', #{rows: 8})
+
+ call VerifyScreenDump(buf, 'Test_display_cursor_long_line', {})
+
+ call StopVimInTerminal(buf)
+ endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
*** ../vim-9.0.1541/src/testdir/dumps/Test_display_cursor_long_line.dump 2023-05-11 18:37:45.325592764 +0100
--- src/testdir/dumps/Test_display_cursor_long_line.dump 2023-05-11 18:33:27.165576908 +0100
***************
*** 0 ****
--- 1,8 ----
+ |<+0#4040ff13#ffffff0@2|b+0#0000000&@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4|
+ |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@2
+ @2| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4|
+ |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@2
+ @2| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4|
+ |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@2
+ @2| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4>
+ @57|2|,|6|0@1| @8|5|0|%|
*** ../vim-9.0.1541/src/version.c 2023-05-11 15:22:55.071745165 +0100
--- src/version.c 2023-05-11 18:36:20.065599004 +0100
***************
*** 697,698 ****
--- 697,700 ----
{ /* Add new patch number below this line */
+ /**/
+ 1542,
/**/
--
How To Keep A Healthy Level Of Insanity:
16. Have your coworkers address you by your wrestling name, Rock Hard Kim.
/// Bram Moolenaar -- Br...@Moolenaar.net --
http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features --
http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims --
http://ICCF-Holland.org ///