vim-patch:9.0.1525: 'smoothscroll' does not always work properly (#23544)

Problem:    'smoothscroll' does not always work properly.
Solution:   Do not reset w_skipcol after it was intentionally set.  (Luuk van
            Baal, closes vim/vim#12360, closes vim/vim#12199, closes vim/vim#12323)

3ce8c38915
This commit is contained in:
luukvbaal
2023-05-09 01:44:31 +02:00
committed by GitHub
parent 7ed4274f69
commit 44fc2a6d7e
3 changed files with 133 additions and 25 deletions

View File

@@ -548,11 +548,11 @@ describe('smoothscroll', function()
exec('set scrolloff=0')
feed('0j')
screen:expect([[
<<<of text with lots of text with lots o|
<<<th lots of text with lots of text wit|
h lots of text with lots of text with lo|
ts of text with lots of text with lots o|
f text with lots of text end |
^four |
~ |
~ |
|
]])
-- Test zt/zz/zb that they work properly when a long line is above it
@@ -696,7 +696,7 @@ describe('smoothscroll', function()
end)
-- oldtest: Test_smoothscroll_ins_lines()
it("this was unnecessarily inserting lines", function()
it("does not unnecessarily insert lines", function()
screen:try_resize(40, 6)
exec([=[
set wrap smoothscroll scrolloff=0 conceallevel=2 concealcursor=nc
@@ -719,6 +719,67 @@ describe('smoothscroll', function()
]])
end)
-- oldtest: Test_smoothscroll_cursormoved_line()
it("does not place the cursor in the command line", function()
screen:try_resize(40, 6)
exec([=[
set smoothscroll
call setline(1, [
\'',
\'_'->repeat(&lines * &columns),
\(('_')->repeat(&columns - 2) .. 'xxx')->repeat(2)
\])
autocmd CursorMoved * eval [line('w0'), line('w$')]
call search('xxx')
]=])
screen:expect([[
<<<_____________________________________|
________________________________________|
______________________________________^xx|
x______________________________________x|
xx |
|
]])
end)
-- oldtest: Test_smoothscroll_eob()
it("does not scroll halfway at end of buffer", function()
screen:try_resize(40, 10)
exec([[
set smoothscroll
call setline(1, ['']->repeat(100))
norm G
]])
-- does not scroll halfway when scrolling to end of buffer
screen:expect([[
|
|
|
|
|
|
|
|
^ |
|
]])
exec("call setline(92, 'a'->repeat(100))")
feed('<C-B>G')
-- cursor is not placed below window
screen:expect([[
<<<aaaaaaaaaaaaaaaaa |
|
|
|
|
|
|
|
^ |
|
]])
end)
it("works with virt_lines above and below", function()
screen:try_resize(55, 7)
exec([=[