1
0
forked from aniani/vim

patch 9.1.0414: Unable to leave long line with 'smoothscroll' and 'scrolloff'

Problem:  Unable to leave long line with 'smoothscroll' and 'scrolloff'.
          Corrupted screen near the end of a long line with 'scrolloff'.
          (Ernie Rael, after 9.1.0280)
Solution: Only correct cursor in case scroll_cursor_bot() was not itself
          called to make the cursor visible. Avoid adjusting for
          'scrolloff' beyond the text line height (Luuk van Baal)

fixes: #14726
closes: #14783

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Luuk van Baal
2024-05-16 20:44:09 +02:00
committed by Christian Brabandt
parent f5c8f520ba
commit b32055e504
12 changed files with 114 additions and 6 deletions

View File

@@ -1153,4 +1153,39 @@ func Test_smoothscroll_long_line_zb()
bwipe!
endfunc
func Test_smooth_long_scrolloff()
CheckScreendump
let lines =<< trim END
set smoothscroll scrolloff=3
call setline(1, ['one', 'two long'->repeat(100), 'three', 'four', 'five', 'six'])
END
call writefile(lines, 'XSmoothLongScrolloff', 'D')
let buf = RunVimInTerminal('-u NONE -S XSmoothLongScrolloff', #{rows: 8, cols: 40})
"FIXME: empty screen due to reset_skipcol()/curs_columns() shenanigans
call term_sendkeys(buf, ":norm j601|\<CR>")
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_1', {})
call term_sendkeys(buf, "gj")
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_2', {})
call term_sendkeys(buf, "gj")
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_3', {})
call term_sendkeys(buf, "gj")
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_4', {})
call term_sendkeys(buf, "gj")
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_5', {})
call term_sendkeys(buf, "gj")
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_6', {})
call term_sendkeys(buf, "gk")
"FIXME: empty screen due to reset_skipcol()/curs_columns() shenanigans
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_7', {})
call StopVimInTerminal(buf)
endfunc
" vim: shiftwidth=2 sts=2 expandtab