commit bf0665b3f320cd183bd1f960cc8501fca60ced9e
parent 77a0f4a542ad9354c647b6bafc1bbd5579212a9e
Author: Luuk van Baal <luukvbaal@gmail.com>
Date: Mon, 28 Nov 2022 18:41:20 +0100
vim-patch:9.0.0964: status line not redrawn when 'splitkeep' is "screen"
Problem: Status line of other window not redrawn when dragging it when
'splitkeep' is set to "screen".
Solution: Set w_redr_status earlier. (Luuk van Baal, closes vim/vim#11635,
closes vim/vim#11632)
https://github.com/vim/vim/commit/74a694dbe20bb7dea4e06f474cf62e20f9c92f1d
Co-authored-by: Luuk van Baal <luukvbaal@gmail.com>
Diffstat:
2 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/src/nvim/testdir/test_window_cmd.vim b/src/nvim/testdir/test_window_cmd.vim
@@ -1793,4 +1793,22 @@ function Test_splitkeep_fold()
call VerifyScreenDump(buf, 'Test_splitkeep_fold_4', {})
endfunction
+function Test_splitkeep_status()
+ CheckScreendump
+
+ let lines =<< trim END
+ call setline(1, ['a', 'b', 'c'])
+ set nomodified
+ set splitkeep=screen
+ let win = winnr()
+ wincmd s
+ wincmd j
+ END
+ call writefile(lines, 'XTestSplitkeepStatus', 'D')
+ let buf = RunVimInTerminal('-S XTestSplitkeepStatus', #{rows: 10})
+
+ call term_sendkeys(buf, ":call win_move_statusline(win, 1)\<CR>")
+ call VerifyScreenDump(buf, 'Test_splitkeep_status_1', {})
+endfunction
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/test/functional/legacy/window_cmd_spec.lua b/test/functional/legacy/window_cmd_spec.lua
@@ -6,9 +6,11 @@ local exec_lua = helpers.exec_lua
local feed = helpers.feed
describe('splitkeep', function()
- local screen = Screen.new()
+ local screen
+
before_each(function()
clear('--cmd', 'set splitkeep=screen')
+ screen = Screen.new()
screen:attach()
end)
@@ -193,4 +195,33 @@ describe('splitkeep', function()
:quit |
]])
end)
+
+ -- oldtest: Test_splitkeep_status()
+ it('does not scroll when split in callback', function()
+ exec([[
+ call setline(1, ['a', 'b', 'c'])
+ set nomodified
+ set splitkeep=screen
+ let win = winnr()
+ wincmd s
+ wincmd j
+ ]])
+ feed(':call win_move_statusline(win, 1)<CR>')
+ screen:expect([[
+ a |
+ b |
+ c |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ [No Name] |
+ ^a |
+ b |
+ c |
+ ~ |
+ [No Name] |
+ |
+ ]])
+ end)
end)