summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-07-02 16:29:34 +0100
committerBram Moolenaar <Bram@vim.org>2022-07-02 16:29:34 +0100
commit2d2950198231a31bf87c1cd4322099cc36b0bb93 (patch)
treea45f361420fb09f8ba52d43d9153ce616b6bee6d
parentc5274dd12224421f2430b30c53b881b9403d649e (diff)
downloadvim-git-2d2950198231a31bf87c1cd4322099cc36b0bb93.tar.gz
patch 9.0.0027: the command line test is getting quite bigv9.0.0027
Problem: The command line test is getting quite big. Solution: Move command line window tests to a separate file.
-rw-r--r--src/testdir/Make_all.mak2
-rw-r--r--src/testdir/test_cmdline.vim276
-rw-r--r--src/testdir/test_cmdwin.vim360
-rw-r--r--src/testdir/test_ins_complete.vim95
-rw-r--r--src/testdir/test_normal.vim6
-rw-r--r--src/version.c2
6 files changed, 364 insertions, 377 deletions
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 4a2ea8894..bc286321f 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -87,6 +87,7 @@ NEW_TESTS = \
test_clientserver \
test_close_count \
test_cmdline \
+ test_cmdwin \
test_command_count \
test_comments \
test_comparators \
@@ -345,6 +346,7 @@ NEW_TESTS_RES = \
test_clientserver.res \
test_close_count.res \
test_cmdline.res \
+ test_cmdwin.res \
test_command_count.res \
test_comments.res \
test_comparators.res \
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index f0498a146..a69774ee8 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -1322,57 +1322,6 @@ func Test_getcmdtype()
call assert_equal('', getcmdline())
endfunc
-func Test_getcmdwintype()
- CheckFeature cmdwin
-
- call feedkeys("q/:let a = getcmdwintype()\<CR>:q\<CR>", 'x!')
- call assert_equal('/', a)
-
- call feedkeys("q?:let a = getcmdwintype()\<CR>:q\<CR>", 'x!')
- call assert_equal('?', a)
-
- call feedkeys("q::let a = getcmdwintype()\<CR>:q\<CR>", 'x!')
- call assert_equal(':', a)
-
- call feedkeys(":\<C-F>:let a = getcmdwintype()\<CR>:q\<CR>", 'x!')
- call assert_equal(':', a)
-
- call assert_equal('', getcmdwintype())
-endfunc
-
-func Test_getcmdwin_autocmd()
- CheckFeature cmdwin
-
- let s:seq = []
- augroup CmdWin
- au WinEnter * call add(s:seq, 'WinEnter ' .. win_getid())
- au WinLeave * call add(s:seq, 'WinLeave ' .. win_getid())
- au BufEnter * call add(s:seq, 'BufEnter ' .. bufnr())
- au BufLeave * call add(s:seq, 'BufLeave ' .. bufnr())
- au CmdWinEnter * call add(s:seq, 'CmdWinEnter ' .. win_getid())
- au CmdWinLeave * call add(s:seq, 'CmdWinLeave ' .. win_getid())
-
- let org_winid = win_getid()
- let org_bufnr = bufnr()
- call feedkeys("q::let a = getcmdwintype()\<CR>:let s:cmd_winid = win_getid()\<CR>:let s:cmd_bufnr = bufnr()\<CR>:q\<CR>", 'x!')
- call assert_equal(':', a)
- call assert_equal([
- \ 'WinLeave ' .. org_winid,
- \ 'WinEnter ' .. s:cmd_winid,
- \ 'BufLeave ' .. org_bufnr,
- \ 'BufEnter ' .. s:cmd_bufnr,
- \ 'CmdWinEnter ' .. s:cmd_winid,
- \ 'CmdWinLeave ' .. s:cmd_winid,
- \ 'BufLeave ' .. s:cmd_bufnr,
- \ 'WinLeave ' .. s:cmd_winid,
- \ 'WinEnter ' .. org_winid,
- \ 'BufEnter ' .. org_bufnr,
- \ ], s:seq)
-
- au!
- augroup END
-endfunc
-
func Test_verbosefile()
set verbosefile=Xlog
echomsg 'foo'
@@ -1454,65 +1403,6 @@ func Test_cmdline_overstrike()
let &encoding = encoding_save
endfunc
-func Test_cmdwin_bug()
- CheckFeature cmdwin
-
- let winid = win_getid()
- sp
- try
- call feedkeys("q::call win_gotoid(" .. winid .. ")\<CR>:q\<CR>", 'x!')
- catch /^Vim\%((\a\+)\)\=:E11/
- endtry
- bw!
-endfunc
-
-func Test_cmdwin_restore()
- CheckFeature cmdwin
- CheckScreendump
-
- let lines =<< trim [SCRIPT]
- augroup vimHints | au! | augroup END
- call setline(1, range(30))
- 2split
- [SCRIPT]
- call writefile(lines, 'XTest_restore')
-
- let buf = RunVimInTerminal('-S XTest_restore', {'rows': 12})
- call TermWait(buf, 50)
- call term_sendkeys(buf, "q:")
- call VerifyScreenDump(buf, 'Test_cmdwin_restore_1', {})
-
- " normal restore
- call term_sendkeys(buf, ":q\<CR>")
- call VerifyScreenDump(buf, 'Test_cmdwin_restore_2', {})
-
- " restore after setting 'lines' with one window
- call term_sendkeys(buf, ":close\<CR>")
- call term_sendkeys(buf, "q:")
- call term_sendkeys(buf, ":set lines=18\<CR>")
- call term_sendkeys(buf, ":q\<CR>")
- call VerifyScreenDump(buf, 'Test_cmdwin_restore_3', {})
-
- " clean up
- call StopVimInTerminal(buf)
- call delete('XTest_restore')
-endfunc
-
-func Test_cmdwin_no_terminal()
- CheckFeature cmdwin
- CheckFeature terminal
- CheckNotMSWindows
-
- let buf = RunVimInTerminal('', {'rows': 12})
- call TermWait(buf, 50)
- call term_sendkeys(buf, ":set cmdheight=2\<CR>")
- call term_sendkeys(buf, "q:")
- call term_sendkeys(buf, ":let buf = term_start(['/bin/echo'], #{hidden: 1})\<CR>")
- call VerifyScreenDump(buf, 'Test_cmdwin_no_terminal', {})
- call term_sendkeys(buf, ":q\<CR>")
- call StopVimInTerminal(buf)
-endfunc
-
func Test_buffers_lastused()
" check that buffers are sorted by time when wildmode has lastused
call test_settime(1550020000) " middle
@@ -1558,61 +1448,6 @@ func Test_buffers_lastused()
bwipeout bufc
endfunc
-func Test_cmdwin_feedkeys()
- CheckFeature cmdwin
-
- " This should not generate E488
- call feedkeys("q:\<CR>", 'x')
- " Using feedkeys with q: only should automatically close the cmd window
- call feedkeys('q:', 'xt')
- call assert_equal(1, winnr('$'))
- call assert_equal('', getcmdwintype())
-endfunc
-
-" Tests for the issues fixed in 7.4.441.
-" When 'cedit' is set to Ctrl-C, opening the command window hangs Vim
-func Test_cmdwin_cedit()
- CheckFeature cmdwin
-
- exe "set cedit=\<C-c>"
- normal! :
- call assert_equal(1, winnr('$'))
-
- let g:cmd_wintype = ''
- func CmdWinType()
- let g:cmd_wintype = getcmdwintype()
- let g:wintype = win_gettype()
- return ''
- endfunc
-
- call feedkeys("\<C-c>a\<C-R>=CmdWinType()\<CR>\<CR>")
- echo input('')
- call assert_equal('@', g:cmd_wintype)
- call assert_equal('command', g:wintype)
-
- set cedit&vim
- delfunc CmdWinType
-endfunc
-
-" Test for CmdwinEnter autocmd
-func Test_cmdwin_autocmd()
- CheckFeature cmdwin
-
- augroup CmdWin
- au!
- autocmd BufLeave * if &buftype == '' | update | endif
- autocmd CmdwinEnter * startinsert
- augroup END
-
- call assert_fails('call feedkeys("q:xyz\<CR>", "xt")', 'E492:')
- call assert_equal('xyz', @:)
-
- augroup CmdWin
- au!
- augroup END
- augroup! CmdWin
-endfunc
-
func Test_cmdlineclear_tabenter()
CheckScreendump
@@ -1649,57 +1484,6 @@ func Test_cmdline_expand_special()
call delete('Xfile.java')
endfunc
-func Test_cmdwin_jump_to_win()
- CheckFeature cmdwin
-
- 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")', ['E37:', '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_cmdwin_tabpage()
- tabedit
- call assert_fails("silent norm q/g :I\<Esc>", 'E11:')
- tabclose!
-endfunc
-
-func Test_cmdwin_interrupted()
- CheckFeature cmdwin
- CheckScreendump
-
- " aborting the :smile output caused the cmdline window to use the current
- " buffer.
- let lines =<< trim [SCRIPT]
- au WinNew * smile
- [SCRIPT]
- call writefile(lines, 'XTest_cmdwin')
-
- let buf = RunVimInTerminal('-S XTest_cmdwin', {'rows': 18})
- " open cmdwin
- call term_sendkeys(buf, "q:")
- call WaitForAssert({-> assert_match('-- More --', term_getline(buf, 18))})
- " quit more prompt for :smile command
- call term_sendkeys(buf, "q")
- call WaitForAssert({-> assert_match('^$', term_getline(buf, 18))})
- " execute a simple command
- call term_sendkeys(buf, "aecho 'done'\<CR>")
- call VerifyScreenDump(buf, 'Test_cmdwin_interrupted', {})
-
- " clean up
- call StopVimInTerminal(buf)
- call delete('XTest_cmdwin')
-endfunc
-
" Test for backtick expression in the command line
func Test_cmd_backtick()
%argd
@@ -2033,14 +1817,6 @@ func Test_cmdline_inputmethod()
%bwipe!
endfunc
-" Test for recursively getting multiple command line inputs
-func Test_cmdwin_multi_input()
- CheckFeature cmdwin
-
- call feedkeys(":\<C-R>=input('P: ')\<CR>\"cyan\<CR>\<CR>", 'xt')
- call assert_equal('"cyan', @:)
-endfunc
-
" Test for using CTRL-_ in the command line with 'allowrevins'
func Test_cmdline_revins()
CheckNotMSWindows
@@ -2059,58 +1835,6 @@ func Test_cmdline_composing_chars()
call assert_equal('"ゔ', @:)
endfunc
-" Test for normal mode commands not supported in the cmd window
-func Test_cmdwin_blocked_commands()
- CheckFeature cmdwin
-
- call assert_fails('call feedkeys("q:\<C-T>\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-]>\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-^>\<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:\<F1>\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>s\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>v\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>^\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>n\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>z\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>o\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>w\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>j\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>k\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>h\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>l\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>T\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>x\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>r\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>R\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>K\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>}\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>]\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>f\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>d\<CR>", "xt")', 'E11:')
- call assert_fails('call feedkeys("q:\<C-W>g\<CR>", "xt")', 'E11:')
-endfunc
-
-" Close the Cmd-line window in insert mode using CTRL-C
-func Test_cmdwin_insert_mode_close()
- CheckFeature cmdwin
-
- %bw!
- let s = ''
- exe "normal q:a\<C-C>let s='Hello'\<CR>"
- call assert_equal('Hello', s)
- call assert_equal(1, winnr('$'))
-endfunc
-
-func Test_cmdwin_ex_mode_with_modifier()
- " this was accessing memory after allocated text in Ex mode
- new
- call setline(1, ['some', 'text', 'lines'])
- silent! call feedkeys("gQnormal vq:atopleft\<C-V>\<CR>\<CR>", 'xt')
- bwipe!
-endfunc
-
" test that ";" works to find a match at the start of the first line
func Test_zero_line_search()
new
diff --git a/src/testdir/test_cmdwin.vim b/src/testdir/test_cmdwin.vim
new file mode 100644
index 000000000..45ecdd11c
--- /dev/null
+++ b/src/testdir/test_cmdwin.vim
@@ -0,0 +1,360 @@
+" Tests for editing the command line.
+
+source check.vim
+CheckFeature cmdwin
+
+source screendump.vim
+
+func Test_getcmdwintype()
+ call feedkeys("q/:let a = getcmdwintype()\<CR>:q\<CR>", 'x!')
+ call assert_equal('/', a)
+
+ call feedkeys("q?:let a = getcmdwintype()\<CR>:q\<CR>", 'x!')
+ call assert_equal('?', a)
+
+ call feedkeys("q::let a = getcmdwintype()\<CR>:q\<CR>", 'x!')
+ call assert_equal(':', a)
+
+ call feedkeys(":\<C-F>:let a = getcmdwintype()\<CR>:q\<CR>", 'x!')
+ call assert_equal(':', a)
+
+ call assert_equal('', getcmdwintype())
+endfunc
+
+func Test_getcmdwin_autocmd()
+ let s:seq = []
+ augroup CmdWin
+ au WinEnter * call add(s:seq, 'WinEnter ' .. win_getid())
+ au WinLeave * call add(s:seq, 'WinLeave ' .. win_getid())
+ au BufEnter * call add(s:seq, 'BufEnter ' .. bufnr())
+ au BufLeave * call add(s:seq, 'BufLeave ' .. bufnr())
+ au CmdWinEnter * call add(s:seq, 'CmdWinEnter ' .. win_getid())
+ au CmdWinLeave * call add(s:seq, 'CmdWinLeave ' .. win_getid())
+
+ let org_winid = win_getid()
+ let org_bufnr = bufnr()
+ call feedkeys("q::let a = getcmdwintype()\<CR>:let s:cmd_winid = win_getid()\<CR>:let s:cmd_bufnr = bufnr()\<CR>:q\<CR>", 'x!')
+ call assert_equal(':', a)
+ call assert_equal([
+ \ 'WinLeave ' .. org_winid,
+ \ 'WinEnter ' .. s:cmd_winid,
+ \ 'BufLeave ' .. org_bufnr,
+ \ 'BufEnter ' .. s:cmd_bufnr,
+ \ 'CmdWinEnter ' .. s:cmd_winid,
+ \ 'CmdWinLeave ' .. s:cmd_winid,
+ \ 'BufLeave ' .. s:cmd_bufnr,
+ \ 'WinLeave ' .. s:cmd_winid,
+ \ 'WinEnter ' .. org_winid,
+ \ 'BufEnter ' .. org_bufnr,
+ \ ], s:seq)
+
+ au!
+ augroup END
+endfunc
+
+func Test_cmdwin_bug()
+ let winid = win_getid()
+ sp
+ try
+ call feedkeys("q::call win_gotoid(" .. winid .. ")\<CR>:q\<CR>", 'x!')
+ catch /^Vim\%((\a\+)\)\=:E11/
+ endtry
+ bw!
+endfunc
+
+func Test_cmdwin_restore()
+ CheckScreendump
+
+ let lines =<< trim [SCRIPT]
+ augroup vimHints | au! | augroup END
+ call setline(1, range(30))
+ 2split
+ [SCRIPT]
+ call writefile(lines, 'XTest_restore')
+
+ let buf = RunVimInTerminal('-S XTest_restore', {'rows': 12})
+ call TermWait(buf, 50)
+ call term_sendkeys(buf, "q:")
+ call VerifyScreenDump(buf, 'Test_cmdwin_restore_1', {})
+
+ " normal restore
+ call term_sendkeys(buf, ":q\<CR>")
+ call VerifyScreenDump(buf, 'Test_cmdwin_restore_2', {})
+
+ " restore after setting 'lines' with one window
+ call term_sendkeys(buf, ":close\<CR>")
+ call term_sendkeys(buf, "q:")
+ call term_sendkeys(buf, ":set lines=18\<CR>")
+ call term_sendkeys(buf, ":q\<CR>")
+ call VerifyScreenDump(buf, 'Test_cmdwin_restore_3', {})
+
+ " clean up
+ call StopVimInTerminal(buf)
+ call delete('XTest_restore')
+endfunc
+
+func Test_cmdwin_no_terminal()
+ CheckFeature terminal
+ CheckNotMSWindows
+
+ let buf = RunVimInTerminal('', {'rows': 12})
+ call TermWait(buf, 50)
+ call term_sendkeys(buf, ":set cmdheight=2\<CR>")
+ call term_sendkeys(buf, "q:")
+ call term_sendkeys(buf, ":let buf = term_start(['/bin/echo'], #{hidden: 1})\<CR>")
+ call VerifyScreenDump(buf, 'Test_cmdwin_no_terminal', {})
+ call term_sendkeys(buf, ":q\<CR>")
+ call StopVimInTerminal(buf)
+endfunc
+
+func Test_cmdwin_feedkeys()
+ " This should not generate E488
+ call feedkeys("q:\<CR>", 'x')
+ " Using feedkeys with q: only should automatically close the cmd window
+ call feedkeys('q:', 'xt')
+ call assert_equal(1, winnr('$'))
+ call assert_equal('', getcmdwintype())
+endfunc
+
+" Tests for the issues fixed in 7.4.441.
+" When 'cedit' is set to Ctrl-C, opening the command window hangs Vim
+func Test_cmdwin_cedit()
+ exe "set cedit=\<C-c>"
+ normal! :
+ call assert_equal(1, winnr('$'))
+
+ let g:cmd_wintype = ''
+ func CmdWinType()
+ let g:cmd_wintype = getcmdwintype()
+ let g:wintype = win_gettype()
+ return ''
+ endfunc
+
+ call feedkeys("\<C-c>a\<C-R>=CmdWinType()\<CR>\<CR>")
+ echo input('')
+ call assert_equal('@', g:cmd_wintype)
+ call assert_equal('command', g:wintype)
+
+ set cedit&vim
+ delfunc CmdWinType
+endfunc
+
+" Test for CmdwinEnter autocmd
+func Test_cmdwin_autocmd()
+ augroup CmdWin
+ au!
+ autocmd BufLeave * if &buftype == '' | update | endif
+ autocmd CmdwinEnter * startinsert
+ augroup END
+
+ call assert_fails('call feedkeys("q:xyz\<CR>", "xt")', 'E492:')
+ call assert_equal('xyz', @:)
+
+ augroup CmdWin
+ au!
+ augroup END
+ augroup! CmdWin
+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")', ['E37:', '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_cmdwin_tabpage()
+ tabedit
+ call assert_fails("silent norm q/g :I\<Esc>", 'E11:')
+ tabclose!
+endfunc
+
+func Test_cmdwin_interrupted()
+ CheckScreendump
+
+ " aborting the :smile output caused the cmdline window to use the current
+ " buffer.
+ let lines =<< trim [SCRIPT]
+ au WinNew * smile
+ [SCRIPT]
+ call writefile(lines, 'XTest_cmdwin')
+
+ let buf = RunVimInTerminal('-S XTest_cmdwin', {'rows': 18})
+ " open cmdwin
+ call term_sendkeys(buf, "q:")
+ call WaitForAssert({-> assert_match('-- More --', term_getline(buf, 18))})
+ " quit more prompt for :smile command
+ call term_sendkeys(buf, "q")
+ call WaitForAssert({-> assert_match('^$', term_getline(buf, 18))})
+ " execute a simple command
+ call term_sendkeys(buf, "aecho 'done'\<CR>")
+ call VerifyScreenDump(buf, 'Test_cmdwin_interrupted', {})
+
+ " clean up
+ call StopVimInTerminal(buf)
+ call delete('XTest_cmdwin')
+endfunc
+
+" Test for recursively getting multiple command line inputs
+func Test_cmdwin_multi_input()
+ call feedkeys(":\<C-R>=input('P: ')\<CR>\"cyan\<CR>\<CR>", 'xt')
+ call assert_equal('"cyan', @:)
+endfunc
+
+" Test for normal mode commands not supported in the cmd window
+func Test_cmdwin_blocked_commands()
+ call assert_fails('call feedkeys("q:\<C-T>\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-]>\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-^>\<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:\<F1>\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>s\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>v\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>^\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>n\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>z\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>o\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>w\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>j\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>k\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>h\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>l\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>T\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>x\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>r\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>R\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>K\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>}\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>]\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>f\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>d\<CR>", "xt")', 'E11:')
+ call assert_fails('call feedkeys("q:\<C-W>g\<CR>", "xt")', 'E11:')
+endfunc
+
+" Close the Cmd-line window in insert mode using CTRL-C
+func Test_cmdwin_insert_mode_close()
+ %bw!
+ let s = ''
+ exe "normal q:a\<C-C>let s='Hello'\<CR>"
+ call assert_equal('Hello', s)
+ call assert_equal(1, winnr('$'))
+endfunc
+
+func Test_cmdwin_ex_mode_with_modifier()
+ " this was accessing memory after allocated text in Ex mode
+ new
+ call setline(1, ['some', 'text', 'lines'])
+ silent! call feedkeys("gQnormal vq:atopleft\<C-V>\<CR>\<CR>", 'xt')
+ bwipe!
+endfunc
+
+func s:ComplInCmdwin_GlobalCompletion(a, l, p)
+ return 'global'
+endfunc
+
+func s:ComplInCmdwin_LocalCompletion(a, l, p)
+ return 'local'
+endfunc
+
+func Test_compl_in_cmdwin()
+ set wildmenu wildchar=<Tab>
+ com! -nargs=1 -complete=command GetInput let input = <q-args>
+ com! -buffer TestCommand echo 'TestCommand'
+ let w:test_winvar = 'winvar'
+ let b:test_bufvar = 'bufvar'
+
+ " User-defined commands
+ let input = ''
+ call feedkeys("q:iGetInput T\<C-x>\<C-v>\<CR>", 'tx!')
+ call assert_equal('TestCommand', input)
+
+ let input = ''
+ call feedkeys("q::GetInput T\<Tab>\<CR>:q\<CR>", 'tx!')
+ call assert_equal('T', input)
+
+
+ com! -nargs=1 -complete=var GetInput let input = <q-args>
+ " Window-local variables
+ let input = ''
+ call feedkeys("q:iGetInput w:test_\<C-x>\<C-v>\<CR>", 'tx!')
+ call assert_equal('w:test_winvar', input)
+
+ let input = ''
+ call feedkeys("q::GetInput w:test_\<Tab>\<CR>:q\<CR>", 'tx!')
+ call assert_equal('w:test_', input)
+
+ " Buffer-local variables
+ let input = ''
+ call feedkeys("q:iGetInput b:test_\<C-x>\<C-v>\<CR>", 'tx!')
+ call assert_equal('b:test_bufvar', input)
+
+ let input = ''
+ call feedkeys("q::GetInput b:test_\<Tab>\<CR>:q\<CR>", 'tx!')
+ call assert_equal('b:test_', input)
+
+
+ " Argument completion of buffer-local command
+ func s:ComplInCmdwin_GlobalCompletionList(a, l, p)
+ return ['global']
+ endfunc
+
+ func s:ComplInCmdwin_LocalCompletionList(a, l, p)
+ return ['local']
+ endfunc
+
+ func s:ComplInCmdwin_CheckCompletion(arg)
+ call assert_equal('local', a:arg)
+ endfunc
+
+ com! -nargs=1 -complete=custom,<SID>ComplInCmdwin_GlobalCompletion
+ \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
+ com! -buffer -nargs=1 -complete=custom,<SID>ComplInCmdwin_LocalCompletion
+ \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
+ call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
+
+ com! -nargs=1 -complete=customlist,<SID>ComplInCmdwin_GlobalCompletionList
+ \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
+ com! -buffer -nargs=1 -complete=customlist,<SID>ComplInCmdwin_LocalCompletionList
+ \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
+
+ call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
+
+ func! s:ComplInCmdwin_CheckCompletion(arg)
+ call assert_equal('global', a:arg)
+ endfunc
+ new
+ call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
+ quit
+
+ delfunc s:ComplInCmdwin_GlobalCompletion
+ delfunc s:ComplInCmdwin_LocalCompletion
+ delfunc s:ComplInCmdwin_GlobalCompletionList
+ delfunc s:ComplInCmdwin_LocalCompletionList
+ delfunc s:ComplInCmdwin_CheckCompletion
+
+ delcom -buffer TestCommand
+ delcom TestCommand
+ delcom GetInput
+ unlet w:test_winvar
+ unlet b:test_bufvar
+ set wildmenu& wildchar&
+endfunc
+
+func Test_cmdwin_ctrl_bsl()
+ " Using CTRL-\ CTRL-N in cmd window should close the window
+ call feedkeys("q:\<C-\>\<C-N>", 'xt')
+ call assert_equal('', getcmdwintype())
+endfunc
+
+
+" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index 20c2b4f48..baf9ef171 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -416,100 +416,6 @@ func Test_compl_feedkeys()
set completeopt&
endfunc
-func s:ComplInCmdwin_GlobalCompletion(a, l, p)
- return 'global'
-endfunc
-
-func s:ComplInCmdwin_LocalCompletion(a, l, p)
- return 'local'
-endfunc
-
-func Test_compl_in_cmdwin()
- CheckFeature cmdwin
-
- set wildmenu wildchar=<Tab>
- com! -nargs=1 -complete=command GetInput let input = <q-args>
- com! -buffer TestCommand echo 'TestCommand'
- let w:test_winvar = 'winvar'
- let b:test_bufvar = 'bufvar'
-
- " User-defined commands
- let input = ''
- call feedkeys("q:iGetInput T\<C-x>\<C-v>\<CR>", 'tx!')
- call assert_equal('TestCommand', input)
-
- let input = ''
- call feedkeys("q::GetInput T\<Tab>\<CR>:q\<CR>", 'tx!')
- call assert_equal('T', input)
-
-
- com! -nargs=1 -complete=var GetInput let input = <q-args>
- " Window-local variables
- let input = ''
- call feedkeys("q:iGetInput w:test_\<C-x>\<C-v>\<CR>", 'tx!')
- call assert_equal('w:test_winvar', input)
-
- let input = ''
- call feedkeys("q::GetInput w:test_\<Tab>\<CR>:q\<CR>", 'tx!')
- call assert_equal('w:test_', input)
-
- " Buffer-local variables
- let input = ''
- call feedkeys("q:iGetInput b:test_\<C-x>\<C-v>\<CR>", 'tx!')
- call assert_equal('b:test_bufvar', input)
-
- let input = ''
- call feedkeys("q::GetInput b:test_\<Tab>\<CR>:q\<CR>", 'tx!')
- call assert_equal('b:test_', input)
-
-
- " Argument completion of buffer-local command
- func s:ComplInCmdwin_GlobalCompletionList(a, l, p)
- return ['global']
- endfunc
-
- func s:ComplInCmdwin_LocalCompletionList(a, l, p)
- return ['local']
- endfunc
-
- func s:ComplInCmdwin_CheckCompletion(arg)
- call assert_equal('local', a:arg)
- endfunc
-
- com! -nargs=1 -complete=custom,<SID>ComplInCmdwin_GlobalCompletion
- \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
- com! -buffer -nargs=1 -complete=custom,<SID>ComplInCmdwin_LocalCompletion
- \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
- call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
-
- com! -nargs=1 -complete=customlist,<SID>ComplInCmdwin_GlobalCompletionList
- \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
- com! -buffer -nargs=1 -complete=customlist,<SID>ComplInCmdwin_LocalCompletionList
- \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
-
- call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
-
- func! s:ComplInCmdwin_CheckCompletion(arg)
- call assert_equal('global', a:arg)
- endfunc
- new
- call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
- quit
-
- delfunc s:ComplInCmdwin_GlobalCompletion
- delfunc s:ComplInCmdwin_LocalCompletion
- delfunc s:ComplInCmdwin_GlobalCompletionList
- delfunc s:ComplInCmdwin_LocalCompletionList
- delfunc s:ComplInCmdwin_CheckCompletion
-
- delcom -buffer TestCommand
- delcom TestCommand
- delcom GetInput
- unlet w:test_winvar
- unlet b:test_bufvar
- set wildmenu& wildchar&
-endfunc
-
" Test for insert path completion with completeslash option
func Test_ins_completeslash()
CheckMSWindows
@@ -2191,5 +2097,4 @@ func Test_complete_overrun()
bwipe!
endfunc
-
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim
index 50c0d5d27..f00dcd046 100644
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -2945,12 +2945,6 @@ func Test_normal40_ctrl_bsl()
call assert_false(&insertmode)
call assert_beeps("normal! \<C-\>\<C-A>")
- if has('cmdwin')
- " Using CTRL-\ CTRL-N in cmd window should close the window
- call feedkeys("q:\<C-\>\<C-N>", 'xt')
- call assert_equal('', getcmdwintype())
- endif
-
" clean up
bw!
endfunc
diff --git a/src/version.c b/src/version.c
index 0eb586396..458591515 100644
--- a/src/version.c
+++ b/src/version.c
@@ -736,6 +736,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 27,
+/**/
26,
/**/
25,