diff options
Diffstat (limited to 'src/testdir/test_window_cmd.vim')
-rw-r--r-- | src/testdir/test_window_cmd.vim | 142 |
1 files changed, 70 insertions, 72 deletions
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim index aa69522d72..017fa67448 100644 --- a/src/testdir/test_window_cmd.vim +++ b/src/testdir/test_window_cmd.vim @@ -1632,31 +1632,29 @@ func Test_win_equal_last_status() set laststatus& endfunc -" Ensure no scrolling happens with 'nosplitscroll' for a sequence of +" Test "screen" and "cursor" values for 'splitkeep' with a sequence of " split operations for various options: with and without a winbar, " tabline, for each possible value of 'laststatus', 'scrolloff', -" 'equalalways', and regardless of the cursor position. -func Test_nosplitscroll_options() - set nowrap - set nosplitscroll - +" 'equalalways', and with the cursor at the top, middle and bottom. +func Test_splitkeep_options() " disallow window resizing let save_WS = &t_WS set t_WS= let gui = has("gui_running") inoremap <expr> c "<cmd>copen<bar>wincmd k<CR>" - for run in range(0, 10) - tabnew | tabonly! | redraw - let tabline = (gui ? 0 : ((run % 5) ? 1 : 0)) - let winbar_sb = (run % 2) && (run % 3) - execute 'set scrolloff=' . (!(run % 4) ? 0 : run) - execute 'set laststatus=' . (run % 3) - execute 'set ' . ((run % 2) ? 'equalalways' : 'noequalalways') - execute 'set ' . ((run % 3) ? 'splitbelow' : 'nosplitbelow') + for run in range(0, 20) + let &splitkeep = run > 10 ? 'topline' : 'screen' + let &scrolloff = (!(run % 4) ? 0 : run) + let &laststatus = (run % 3) + let &splitbelow = (run % 3) + let &equalalways = (run % 2) + let wsb = (run % 2) && &splitbelow + let tl = (gui ? 0 : ((run % 5) ? 1 : 0)) + let pos = !(run % 3) ? 'H' : ((run % 2) ? 'M' : 'L') + tabnew | tabonly! | redraw execute (run % 5) ? 'tabnew' : '' execute (run % 2) ? 'nnoremenu 1.10 WinBar.Test :echo' : '' - let pos = !(run % 3) ? 'H' : ((run % 2) ? 'M' : 'L') call setline(1, range(1, 256)) " No scroll for restore_snapshot norm G @@ -1672,17 +1670,17 @@ func Test_nosplitscroll_options() call assert_equal(1, line("w0")) call assert_equal(&scroll, winheight(0) / 2) wincmd j - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) " No scroll when resizing windows - wincmd k | resize +2 + wincmd k | resize +2 | redraw call assert_equal(1, line("w0")) wincmd j - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) " No scroll when dragging statusline call win_move_statusline(1, -3) - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) wincmd k call assert_equal(1, line("w0")) @@ -1690,9 +1688,9 @@ func Test_nosplitscroll_options() set lines+=2 call assert_equal(1, line("w0")) wincmd j - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) set lines-=2 - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) wincmd k call assert_equal(1, line("w0")) @@ -1700,23 +1698,23 @@ func Test_nosplitscroll_options() wincmd = call assert_equal(1, line("w0")) wincmd j - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) wincmd k call assert_equal(1, line("w0")) " No scroll in windows split multiple times vsplit | split | 4wincmd w - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) 1wincmd w | quit | wincmd l | split - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) wincmd j - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) " No scroll in small window 2wincmd w | only | 5split | wincmd k call assert_equal(1, line("w0")) wincmd j - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) " No scroll for vertical split quit | vsplit | wincmd l @@ -1725,8 +1723,8 @@ func Test_nosplitscroll_options() call assert_equal(1, line("w0")) " No scroll in windows split and quit multiple times - quit | redraw | split | redraw | split | redraw | quit | redraw - call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + quit | redraw | split | split | quit | redraw + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl - wsb, line("w0")) " No scroll for new buffer 1wincmd w | only | copen | wincmd k @@ -1734,7 +1732,7 @@ func Test_nosplitscroll_options() only call assert_equal(1, line("w0")) above copen | wincmd j - call assert_equal(win_screenpos(0)[0] - tabline, line("w0")) + call assert_equal(&spk == 'topline' ? 1 : win_screenpos(0)[0] - tl, line("w0")) " No scroll when opening cmdwin, and no cursor move when closing cmdwin. only | norm ggL @@ -1751,22 +1749,21 @@ func Test_nosplitscroll_options() only | execute "norm gg5\<C-e>" | split | wincmd k call assert_equal(6, line("w0")) wincmd j - call assert_equal(5 + win_screenpos(0)[0] - tabline - winbar_sb, line("w0")) + call assert_equal(&spk == 'topline' ? 6 : 5 + win_screenpos(0)[0] - tl - wsb, line("w0")) endfor tabnew | tabonly! | %bwipeout! iunmap c - set wrap& set scrolloff& set splitbelow& set laststatus& set equalalways& - set splitscroll& + set splitkeep& let &t_WS = save_WS endfunc -function Test_nosplitscroll_cmdwin_cursor_position() - set nosplitscroll +function Test_splitkeep_cmdwin_cursor_position() + set splitkeep=screen call setline(1, range(&lines)) " No scroll when cursor is at near bottom of window and cusor position @@ -1789,11 +1786,11 @@ function Test_nosplitscroll_cmdwin_cursor_position() call assert_equal(1, col('.')) %bwipeout! - set splitscroll& + set splitkeep& endfunction -function Test_nosplitscroll_misc() - set nosplitscroll +function Test_splitkeep_misc() + set splitkeep=screen set splitbelow call setline(1, range(1, &lines)) @@ -1815,67 +1812,68 @@ function Test_nosplitscroll_misc() %bwipeout! set splitbelow& - set splitscroll& + set splitkeep& endfunc -function Test_nosplitscroll_callback() +function Test_splitkeep_callback() CheckScreendump let lines =<< trim END - set nosplitscroll + set splitkeep=screen call setline(1, range(&lines)) - function WincmdCb(a, b) + function C1(a, b) split | wincmd p endfunction - function TermCb(a, b) + function C2(a, b) close | split endfunction - nnoremap t <cmd>call popup_create(term_start(&shell, { 'hidden': 1, 'exit_cb': 'TermCb' }), {})<CR> - nnoremap j <cmd>call job_start([&shell, &shellcmdflag, "echo"], { 'exit_cb': 'WincmdCb' })<CR> + nn j <cmd>call job_start([&sh, &shcf, "true"], { 'exit_cb': 'C1' })<CR> + nn t <cmd>call popup_create(term_start([&sh, &shcf, "true"], + \ { 'hidden': 1, 'exit_cb': 'C2' }), {})<CR> END - call writefile(lines, 'XTestNosplitscrollCallback', 'D') - let buf = RunVimInTerminal('-S XTestNosplitscrollCallback', #{rows: 8}) + call writefile(lines, 'XTestSplitkeepCallback', 'D') + let buf = RunVimInTerminal('-S XTestSplitkeepCallback', #{rows: 8}) call term_sendkeys(buf, "j") - call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_1', {}) + call VerifyScreenDump(buf, 'Test_splitkeep_callback_1', {}) - call term_sendkeys(buf, ":quit\<CR>Htexit\<CR>") - call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_2', {}) + call term_sendkeys(buf, ":quit\<CR>Ht") + call VerifyScreenDump(buf, 'Test_splitkeep_callback_2', {}) call term_sendkeys(buf, ":set sb\<CR>:quit\<CR>Gj") - call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_3', {}) + call VerifyScreenDump(buf, 'Test_splitkeep_callback_3', {}) - call term_sendkeys(buf, ":quit\<CR>Gtexit\<CR>") - call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_4', {}) + call term_sendkeys(buf, ":quit\<CR>Gt") + call VerifyScreenDump(buf, 'Test_splitkeep_callback_4', {}) endfunc -function Test_nosplitscroll_fold() -CheckScreendump - -let lines =<< trim END - set nosplitscroll - set foldmethod=marker - set number - let line = 1 - for n in range(1, &lines) - call setline(line, ['int FuncName() {/*{{{*/', 1, 2, 3, 4, 5, '}/*}}}*/', - \ 'after fold']) - let line += 8 - endfor -END - call writefile(lines, 'XTestNosplitscrollFold', 'D') - let buf = RunVimInTerminal('-S XTestNosplitscrollFold', #{rows: 10}) +function Test_splitkeep_fold() + CheckScreendump + + let lines =<< trim END + set splitkeep=screen + set foldmethod=marker + set number + let line = 1 + for n in range(1, &lines) + call setline(line, ['int FuncName() {/*{{{*/', 1, 2, 3, 4, 5, '}/*}}}*/', + \ 'after fold']) + let line += 8 + endfor + END + call writefile(lines, 'XTestSplitkeepFold', 'D') + let buf = RunVimInTerminal('-S XTestSplitkeepFold', #{rows: 10}) call term_sendkeys(buf, "L:wincmd s\<CR>") - call VerifyScreenDump(buf, 'Test_nosplitscroll_fold_1', {}) + call VerifyScreenDump(buf, 'Test_splitkeep_fold_1', {}) call term_sendkeys(buf, ":quit\<CR>") - call VerifyScreenDump(buf, 'Test_nosplitscroll_fold_2', {}) + call VerifyScreenDump(buf, 'Test_splitkeep_fold_2', {}) call term_sendkeys(buf, "H:below split\<CR>") - call VerifyScreenDump(buf, 'Test_nosplitscroll_fold_3', {}) + call VerifyScreenDump(buf, 'Test_splitkeep_fold_3', {}) call term_sendkeys(buf, ":wincmd k\<CR>:quit\<CR>") - call VerifyScreenDump(buf, 'Test_nosplitscroll_fold_4', {}) + call VerifyScreenDump(buf, 'Test_splitkeep_fold_4', {}) endfunction " vim: shiftwidth=2 sts=2 expandtab |