0
0
mirror of https://github.com/vim/vim.git synced 2025-10-04 05:25:06 -04:00

patch 9.0.1542: line not fully displayed if it doesn't fit in the screen

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)
This commit is contained in:
Luuk van Baal
2023-05-11 18:38:14 +01:00
committed by Bram Moolenaar
parent e741f039cf
commit 6c018680be
4 changed files with 32 additions and 5 deletions

View File

@@ -2772,11 +2772,10 @@ scroll_cursor_halfway(int atend, int prefer_above)
topline = loff.lnum;
int want_height;
int smooth_scroll = FALSE;
if (curwin->w_p_sms && curwin->w_p_wrap)
int do_sms = curwin->w_p_wrap && curwin->w_p_sms;
if (do_sms)
{
// 'smoothscroll' and 'wrap' are set
smooth_scroll = TRUE;
if (atend)
{
want_height = (curwin->w_height - used) / 2;
@@ -2790,7 +2789,7 @@ scroll_cursor_halfway(int atend, int prefer_above)
{
// If using smoothscroll, we can precisely scroll to the
// exact point where the cursor is halfway down the screen.
if (smooth_scroll)
if (do_sms)
{
topline_back_winheight(&loff, FALSE);
if (loff.height == MAXCOL)
@@ -2892,7 +2891,7 @@ scroll_cursor_halfway(int atend, int prefer_above)
curwin->w_skipcol = skipcol;
redraw_later(UPD_NOT_VALID);
}
else
else if (do_sms)
reset_skipcol();
}
}

View File

@@ -0,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|%|

View File

@@ -489,4 +489,22 @@ func Test_display_long_lastline()
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

View File

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