vim-patch:8.2.0921: CTRL-W T in cmdline window causes trouble

Problem:    CTRL-W T in cmdline window causes trouble.
Solution:   Disallow CTRL-W T in the cmdline window.  Add more tests.
            (Naruhiko Nishino, closes vim/vim#6219)
4fdb8bd054

Test already passes in Nvim because of later patches.
Move Test_cmdwin_jump_to_win() to the right place.
This commit is contained in:
zeertzjq 2022-07-14 20:31:19 +08:00
parent b41f2bcae7
commit 08235b6f2a
2 changed files with 38 additions and 16 deletions

View File

@ -1326,22 +1326,6 @@ func Test_cmdwin_autocmd()
augroup! CmdWin augroup! CmdWin
endfunc endfunc
func Test_cmdwin_jump_to_win()
call assert_fails('call feedkeys("q:\<C-W>\<C-W>\<CR>", "xt")', 'E11:')
new
set modified
call assert_fails('call feedkeys("q/:qall\<CR>", "xt")', 'E162:')
close!
call feedkeys("q/:close\<CR>", "xt")
call assert_equal(1, winnr('$'))
call feedkeys("q/:exit\<CR>", "xt")
call assert_equal(1, winnr('$'))
" opening command window twice should fail
call assert_beeps('call feedkeys("q:q:\<CR>\<CR>", "xt")')
call assert_equal(1, winnr('$'))
endfunc
func Test_cmdlineclear_tabenter() func Test_cmdlineclear_tabenter()
" See test/functional/legacy/cmdline_spec.lua " See test/functional/legacy/cmdline_spec.lua
CheckScreendump CheckScreendump
@ -1379,6 +1363,22 @@ func Test_cmdline_expand_special()
call delete('Xfile.java') call delete('Xfile.java')
endfunc endfunc
func Test_cmdwin_jump_to_win()
call assert_fails('call feedkeys("q:\<C-W>\<C-W>\<CR>", "xt")', 'E11:')
new
set modified
call assert_fails('call feedkeys("q/:qall\<CR>", "xt")', 'E162:')
close!
call feedkeys("q/:close\<CR>", "xt")
call assert_equal(1, winnr('$'))
call feedkeys("q/:exit\<CR>", "xt")
call assert_equal(1, winnr('$'))
" opening command window twice should fail
call assert_beeps('call feedkeys("q:q:\<CR>\<CR>", "xt")')
call assert_equal(1, winnr('$'))
endfunc
" Test for backtick expression in the command line " Test for backtick expression in the command line
func Test_cmd_backtick() func Test_cmd_backtick()
%argd %argd
@ -1698,6 +1698,27 @@ func Test_cmdwin_blocked_commands()
call assert_fails('call feedkeys("q:Q\<CR>", "xt")', 'E11:') call assert_fails('call feedkeys("q:Q\<CR>", "xt")', 'E11:')
call assert_fails('call feedkeys("q:Z\<CR>", "xt")', 'E11:') call assert_fails('call feedkeys("q:Z\<CR>", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<F1>\<CR>", "xt")', 'E11:') call assert_fails('call feedkeys("q:\<F1>\<CR>", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>s", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>v", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>^", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>n", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>z", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>o", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>w", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>j", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>k", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>h", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>l", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>T", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>x", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>r", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>R", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>K", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>}", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>]", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>f", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>d", "xt")', 'E11:')
call assert_fails('call feedkeys("q:\<C-W>g", "xt")', 'E11:')
endfunc endfunc
" test that ";" works to find a match at the start of the first line " test that ";" works to find a match at the start of the first line

View File

@ -331,6 +331,7 @@ newwindow:
// move window to new tab page // move window to new tab page
case 'T': case 'T':
CHECK_CMDWIN;
if (one_window(curwin)) { if (one_window(curwin)) {
msg(_(m_onlyone)); msg(_(m_onlyone));
} else { } else {