Merge pull request #13419 from janlazo/vim-8.2.2067

vim-patch:8.1.2264,8.2.{617,620,628,2067,2069}
This commit is contained in:
Jan Edmund Lazo 2020-11-30 20:59:40 -05:00 committed by GitHub
commit a1a4dd34ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 397 additions and 331 deletions

View File

@ -6155,7 +6155,7 @@ static int qf_setprop_items_from_lines(
qf_free_items(&qi->qf_lists[qf_idx]); qf_free_items(&qi->qf_lists[qf_idx]);
} }
if (qf_init_ext(qi, qf_idx, NULL, NULL, &di->di_tv, errorformat, if (qf_init_ext(qi, qf_idx, NULL, NULL, &di->di_tv, errorformat,
false, (linenr_T)0, (linenr_T)0, NULL, NULL) > 0) { false, (linenr_T)0, (linenr_T)0, NULL, NULL) >= 0) {
retval = OK; retval = OK;
} }
@ -6256,9 +6256,12 @@ static int qf_set_properties(qf_info_T *qi, const dict_T *what, int action,
retval = qf_setprop_curidx(qi, qfl, di); retval = qf_setprop_curidx(qi, qfl, di);
} }
if (retval == OK) { if (newlist || retval == OK) {
qf_list_changed(qfl); qf_list_changed(qfl);
} }
if (newlist) {
qf_update_buffer(qi, NULL);
}
return retval; return retval;
} }

View File

@ -318,7 +318,7 @@ let ExtraVimCount = 0
let ExtraVimBase = expand("<sfile>") let ExtraVimBase = expand("<sfile>")
let ExtraVimTestEnv = "" let ExtraVimTestEnv = ""
" "
function! ExtraVim(...) function ExtraVim(...)
" Count how often this function is called. " Count how often this function is called.
let g:ExtraVimCount = g:ExtraVimCount + 1 let g:ExtraVimCount = g:ExtraVimCount + 1
@ -500,7 +500,7 @@ endfunction
" an ExtraVim script as passed by ExtraVim() in ExtraVimBegin. " an ExtraVim script as passed by ExtraVim() in ExtraVimBegin.
" "
" EXTRA_VIM_START - do not change or remove this line. " EXTRA_VIM_START - do not change or remove this line.
function! ExtraVimThrowpoint() function ExtraVimThrowpoint()
if !exists("g:ExtraVimBegin") if !exists("g:ExtraVimBegin")
Xout "ExtraVimThrowpoint() used outside ExtraVim() script." Xout "ExtraVimThrowpoint() used outside ExtraVim() script."
return v:throwpoint return v:throwpoint
@ -530,7 +530,7 @@ endfunction
" as a script file, use ExecAsScript below. " as a script file, use ExecAsScript below.
" "
" EXTRA_VIM_START - do not change or remove this line. " EXTRA_VIM_START - do not change or remove this line.
function! MakeScript(funcname, ...) function MakeScript(funcname, ...)
let script = tempname() let script = tempname()
execute "redir! >" . script execute "redir! >" . script
execute "function" a:funcname execute "function" a:funcname
@ -568,7 +568,7 @@ endfunction
" location specified in the function. " location specified in the function.
" "
" EXTRA_VIM_START - do not change or remove this line. " EXTRA_VIM_START - do not change or remove this line.
function! ExecAsScript(funcname) function ExecAsScript(funcname)
" Make a script from the function passed as argument. " Make a script from the function passed as argument.
let script = MakeScript(a:funcname) let script = MakeScript(a:funcname)
@ -3694,7 +3694,7 @@ endif
if ExtraVim(msgfile) if ExtraVim(msgfile)
try try
Xpath 4194304 " X: 4194304 Xpath 4194304 " X: 4194304
let x = novar " error E121/E15; exception: E121 let x = novar " error E121; exception: E121
catch /E15:/ " should not catch catch /E15:/ " should not catch
Xpath 8388608 " X: 0 Xpath 8388608 " X: 0
endtry endtry
@ -3702,7 +3702,7 @@ if ExtraVim(msgfile)
endif endif
Xpath 33554432 " X: 33554432 Xpath 33554432 " X: 33554432
if !MESSAGES('E121', "Undefined variable", 'E15', "Invalid expression") if !MESSAGES('E121', "Undefined variable")
Xpath 67108864 " X: 0 Xpath 67108864 " X: 0
endif endif
@ -8548,7 +8548,7 @@ endfunction
" Remove the autocommands for the events specified as arguments in all used " Remove the autocommands for the events specified as arguments in all used
" autogroups. " autogroups.
function! Delete_autocommands(...) function Delete_autocommands(...)
let augfile = tempname() let augfile = tempname()
while 1 while 1
try try

View File

@ -1,7 +1,6 @@
" A series of tests that can run in one Vim invocation. " A series of tests that can run in one Vim invocation.
" This makes testing go faster, since Vim doesn't need to restart. " This makes testing go faster, since Vim doesn't need to restart.
source test_assign.vim
source test_backup.vim source test_backup.vim
source test_behave.vim source test_behave.vim
source test_cd.vim source test_cd.vim

View File

@ -1,47 +0,0 @@
" Test for assignment
func Test_no_type_checking()
let v = 1
let v = [1,2,3]
let v = {'a': 1, 'b': 2}
let v = 3.4
let v = 'hello'
endfunc
func Test_let_termcap()
" Nvim does not support `:set termcap`.
return
" Terminal code
let old_t_te = &t_te
let &t_te = "\<Esc>[yes;"
call assert_match('t_te.*^[[yes;', execute("set termcap"))
let &t_te = old_t_te
if exists("+t_k1")
" Key code
let old_t_k1 = &t_k1
let &t_k1 = "that"
call assert_match('t_k1.*that', execute("set termcap"))
let &t_k1 = old_t_k1
endif
call assert_fails('let x = &t_xx', 'E15')
let &t_xx = "yes"
call assert_equal("yes", &t_xx)
let &t_xx = ""
call assert_fails('let x = &t_xx', 'E15')
endfunc
func Test_let_option_error()
let _w = &tw
let &tw = 80
call assert_fails('let &tw .= 1', 'E734')
call assert_equal(80, &tw)
let &tw = _w
let _w = &fillchars
let &fillchars = "vert:|"
call assert_fails('let &fillchars += "diff:-"', 'E734')
call assert_equal("vert:|", &fillchars)
let &fillchars = _w
endfunc

View File

@ -1359,7 +1359,7 @@ func Test_ChangedP()
endfunc endfunc
let g:setline_handled = v:false let g:setline_handled = v:false
func! SetLineOne() func SetLineOne()
if !g:setline_handled if !g:setline_handled
call setline(1, "(x)") call setline(1, "(x)")
let g:setline_handled = v:true let g:setline_handled = v:true

View File

@ -1,5 +1,5 @@
function! Test_charsearch() func Test_charsearch()
enew! enew!
call append(0, ['Xabcdefghijkemnopqretuvwxyz', call append(0, ['Xabcdefghijkemnopqretuvwxyz',
\ 'Yabcdefghijkemnopqretuvwxyz', \ 'Yabcdefghijkemnopqretuvwxyz',
@ -29,10 +29,10 @@ function! Test_charsearch()
normal! ;;p normal! ;;p
call assert_equal('ZabcdeZfghijkZZemnokqretkZvwxyz', getline(3)) call assert_equal('ZabcdeZfghijkZZemnokqretkZvwxyz', getline(3))
enew! enew!
endfunction endfunc
" Test for t,f,F,T movement commands and 'cpo-;' setting " Test for t,f,F,T movement commands and 'cpo-;' setting
function! Test_search_cmds() func Test_search_cmds()
enew! enew!
call append(0, ["aaa two three four", " zzz", "yyy ", call append(0, ["aaa two three four", " zzz", "yyy ",
\ "bbb yee yoo four", "ccc two three four", \ "bbb yee yoo four", "ccc two three four",
@ -59,4 +59,4 @@ function! Test_search_cmds()
call assert_equal('ccc', getline(5)) call assert_equal('ccc', getline(5))
call assert_equal('ddd yee y', getline(6)) call assert_equal('ddd yee y', getline(6))
enew! enew!
endfunction endfunc

View File

@ -14,6 +14,6 @@ function! Test_search_cmds()
normal! , normal! ,
call assert_equal([0, 1, 28, 0], getpos('.')) call assert_equal([0, 1, 28, 0], getpos('.'))
bw! bw!
endfunction endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@ -11,7 +11,7 @@ source view_util.vim
" Needs to come first until the bug in getchar() is " Needs to come first until the bug in getchar() is
" fixed: https://groups.google.com/d/msg/vim_dev/fXL9yme4H4c/bOR-U6_bAQAJ " fixed: https://groups.google.com/d/msg/vim_dev/fXL9yme4H4c/bOR-U6_bAQAJ
func! Test_edit_00b() func Test_edit_00b()
new new
call setline(1, ['abc ']) call setline(1, ['abc '])
inoreabbr <buffer> h here some more inoreabbr <buffer> h here some more
@ -23,7 +23,7 @@ func! Test_edit_00b()
bw! bw!
endfunc endfunc
func! Test_edit_01() func Test_edit_01()
" set for Travis CI? " set for Travis CI?
" set nocp noesckeys " set nocp noesckeys
new new
@ -61,7 +61,7 @@ func! Test_edit_01()
bw! bw!
endfunc endfunc
func! Test_edit_02() func Test_edit_02()
" Change cursor position in InsertCharPre command " Change cursor position in InsertCharPre command
new new
call setline(1, 'abc') call setline(1, 'abc')
@ -101,7 +101,7 @@ func! Test_edit_02()
bw! bw!
endfunc endfunc
func! Test_edit_03() func Test_edit_03()
" Change cursor after <c-o> command to end of line " Change cursor after <c-o> command to end of line
new new
call setline(1, 'abc') call setline(1, 'abc')
@ -120,7 +120,7 @@ func! Test_edit_03()
bw! bw!
endfunc endfunc
func! Test_edit_04() func Test_edit_04()
" test for :stopinsert " test for :stopinsert
new new
call setline(1, 'abc') call setline(1, 'abc')
@ -132,7 +132,7 @@ func! Test_edit_04()
bw! bw!
endfunc endfunc
func! Test_edit_05() func Test_edit_05()
" test for folds being opened " test for folds being opened
new new
call setline(1, ['abcX', 'abcX', 'zzzZ']) call setline(1, ['abcX', 'abcX', 'zzzZ'])
@ -154,7 +154,7 @@ func! Test_edit_05()
bw! bw!
endfunc endfunc
func! Test_edit_06() func Test_edit_06()
" Test in diff mode " Test in diff mode
if !has("diff") || !executable("diff") if !has("diff") || !executable("diff")
return return
@ -176,7 +176,7 @@ func! Test_edit_06()
bw! bw!
endfunc endfunc
func! Test_edit_07() func Test_edit_07()
" 1) Test with completion <c-l> when popupmenu is visible " 1) Test with completion <c-l> when popupmenu is visible
new new
call setline(1, 'J') call setline(1, 'J')
@ -228,7 +228,7 @@ func! Test_edit_08()
unlet g:bufnr unlet g:bufnr
endfunc endfunc
func! Test_edit_09() func Test_edit_09()
" test i_CTRL-\ combinations " test i_CTRL-\ combinations
new new
call setline(1, ['abc', 'def', 'ghi']) call setline(1, ['abc', 'def', 'ghi'])
@ -258,7 +258,7 @@ func! Test_edit_09()
bw! bw!
endfunc endfunc
func! Test_edit_10() func Test_edit_10()
" Test for starting selectmode " Test for starting selectmode
new new
set selectmode=key keymodel=startsel set selectmode=key keymodel=startsel
@ -270,7 +270,7 @@ func! Test_edit_10()
bw! bw!
endfunc endfunc
func! Test_edit_11() func Test_edit_11()
" Test that indenting kicks in " Test that indenting kicks in
new new
set cindent set cindent
@ -314,7 +314,7 @@ func! Test_edit_11()
bw! bw!
endfunc endfunc
func! Test_edit_11_indentexpr() func Test_edit_11_indentexpr()
" Test that indenting kicks in " Test that indenting kicks in
new new
" Use indentexpr instead of cindenting " Use indentexpr instead of cindenting
@ -341,7 +341,7 @@ func! Test_edit_11_indentexpr()
bw! bw!
endfunc endfunc
func! Test_edit_12() func Test_edit_12()
" Test changing indent in replace mode " Test changing indent in replace mode
new new
call setline(1, ["\tabc", "\tdef"]) call setline(1, ["\tabc", "\tdef"])
@ -393,7 +393,7 @@ func! Test_edit_12()
bw! bw!
endfunc endfunc
func! Test_edit_13() func Test_edit_13()
" Test smartindenting " Test smartindenting
if exists("+smartindent") if exists("+smartindent")
new new
@ -481,7 +481,7 @@ func! Test_edit_CTRL_()
endfunc endfunc
" needs to come first, to have the @. register empty " needs to come first, to have the @. register empty
func! Test_edit_00a_CTRL_A() func Test_edit_00a_CTRL_A()
" Test pressing CTRL-A " Test pressing CTRL-A
new new
call setline(1, repeat([''], 5)) call setline(1, repeat([''], 5))
@ -501,7 +501,7 @@ func! Test_edit_00a_CTRL_A()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_EY() func Test_edit_CTRL_EY()
" Ctrl-E/ Ctrl-Y in insert mode completion to scroll " Ctrl-E/ Ctrl-Y in insert mode completion to scroll
10new 10new
call setline(1, range(1, 100)) call setline(1, range(1, 100))
@ -517,7 +517,7 @@ func! Test_edit_CTRL_EY()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_G() func Test_edit_CTRL_G()
new new
call setline(1, ['foobar', 'foobar', 'foobar']) call setline(1, ['foobar', 'foobar', 'foobar'])
call cursor(2, 4) call cursor(2, 4)
@ -535,7 +535,7 @@ func! Test_edit_CTRL_G()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_I() func Test_edit_CTRL_I()
" Tab in completion mode " Tab in completion mode
let path=expand("%:p:h") let path=expand("%:p:h")
new new
@ -559,7 +559,7 @@ func! Test_edit_CTRL_I()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_K() func Test_edit_CTRL_K()
" Test pressing CTRL-K (basically only dictionary completion and digraphs " Test pressing CTRL-K (basically only dictionary completion and digraphs
" the rest is already covered " the rest is already covered
call writefile(['A', 'AA', 'AAA', 'AAAA'], 'Xdictionary.txt') call writefile(['A', 'AA', 'AAA', 'AAAA'], 'Xdictionary.txt')
@ -632,7 +632,7 @@ func! Test_edit_CTRL_K()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_L() func Test_edit_CTRL_L()
" Test Ctrl-X Ctrl-L (line completion) " Test Ctrl-X Ctrl-L (line completion)
new new
set complete=. set complete=.
@ -688,7 +688,7 @@ func! Test_edit_CTRL_L()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_N() func Test_edit_CTRL_N()
" Check keyword completion " Check keyword completion
new new
set complete=. set complete=.
@ -709,7 +709,7 @@ func! Test_edit_CTRL_N()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_O() func Test_edit_CTRL_O()
" Check for CTRL-O in insert mode " Check for CTRL-O in insert mode
new new
inoreabbr <buffer> h here some more inoreabbr <buffer> h here some more
@ -749,7 +749,7 @@ func! Test_edit_CTRL_R()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_S() func Test_edit_CTRL_S()
" Test pressing CTRL-S (basically only spellfile completion) " Test pressing CTRL-S (basically only spellfile completion)
" the rest is already covered " the rest is already covered
new new
@ -793,7 +793,7 @@ func! Test_edit_CTRL_S()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_T() func Test_edit_CTRL_T()
" Check for CTRL-T and CTRL-X CTRL-T in insert mode " Check for CTRL-T and CTRL-X CTRL-T in insert mode
" 1) increase indent " 1) increase indent
new new
@ -870,7 +870,7 @@ func! Test_edit_CTRL_T()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_U() func Test_edit_CTRL_U()
" Test 'completefunc' " Test 'completefunc'
new new
" -1, -2 and -3 are special return values " -1, -2 and -3 are special return values
@ -929,7 +929,7 @@ func! Test_edit_CTRL_U()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_Z() func Test_edit_CTRL_Z()
" Ctrl-Z when insertmode is not set inserts it literally " Ctrl-Z when insertmode is not set inserts it literally
new new
call setline(1, 'abc') call setline(1, 'abc')
@ -939,7 +939,7 @@ func! Test_edit_CTRL_Z()
" TODO: How to Test Ctrl-Z in insert mode, e.g. suspend? " TODO: How to Test Ctrl-Z in insert mode, e.g. suspend?
endfunc endfunc
func! Test_edit_DROP() func Test_edit_DROP()
if !has("dnd") if !has("dnd")
return return
endif endif
@ -955,7 +955,7 @@ func! Test_edit_DROP()
bw! bw!
endfunc endfunc
func! Test_edit_CTRL_V() func Test_edit_CTRL_V()
if has("ebcdic") if has("ebcdic")
return return
endif endif
@ -983,7 +983,7 @@ func! Test_edit_CTRL_V()
bw! bw!
endfunc endfunc
func! Test_edit_F1() func Test_edit_F1()
" Pressing <f1> " Pressing <f1>
new new
call feedkeys(":set im\<cr>\<f1>\<c-l>", 'tnix') call feedkeys(":set im\<cr>\<f1>\<c-l>", 'tnix')
@ -993,7 +993,7 @@ func! Test_edit_F1()
bw bw
endfunc endfunc
func! Test_edit_F21() func Test_edit_F21()
" Pressing <f21> " Pressing <f21>
" sends a netbeans command " sends a netbeans command
if has("netbeans_intg") if has("netbeans_intg")
@ -1004,7 +1004,7 @@ func! Test_edit_F21()
endif endif
endfunc endfunc
func! Test_edit_HOME_END() func Test_edit_HOME_END()
" Test Home/End Keys " Test Home/End Keys
new new
set foldopen+=hor set foldopen+=hor
@ -1019,7 +1019,7 @@ func! Test_edit_HOME_END()
bw! bw!
endfunc endfunc
func! Test_edit_INS() func Test_edit_INS()
" Test for Pressing <Insert> " Test for Pressing <Insert>
new new
call setline(1, ['abc', 'def']) call setline(1, ['abc', 'def'])
@ -1033,7 +1033,7 @@ func! Test_edit_INS()
bw! bw!
endfunc endfunc
func! Test_edit_LEFT_RIGHT() func Test_edit_LEFT_RIGHT()
" Left, Shift-Left, Right, Shift-Right " Left, Shift-Left, Right, Shift-Right
new new
call setline(1, ['abc def ghi', 'ABC DEF GHI', 'ZZZ YYY XXX']) call setline(1, ['abc def ghi', 'ABC DEF GHI', 'ZZZ YYY XXX'])
@ -1080,7 +1080,7 @@ func! Test_edit_LEFT_RIGHT()
bw! bw!
endfunc endfunc
func! Test_edit_MOUSE() func Test_edit_MOUSE()
" This is a simple test, since we not really using the mouse here " This is a simple test, since we not really using the mouse here
if !has("mouse") if !has("mouse")
return return
@ -1135,7 +1135,7 @@ func! Test_edit_MOUSE()
bw! bw!
endfunc endfunc
func! Test_edit_PAGEUP_PAGEDOWN() func Test_edit_PAGEUP_PAGEDOWN()
10new 10new
call setline(1, repeat(['abc def ghi'], 30)) call setline(1, repeat(['abc def ghi'], 30))
call cursor(1, 1) call cursor(1, 1)
@ -1234,7 +1234,7 @@ func! Test_edit_PAGEUP_PAGEDOWN()
bw! bw!
endfunc endfunc
func! Test_edit_forbidden() func Test_edit_forbidden()
new new
" 1) edit in the sandbox is not allowed " 1) edit in the sandbox is not allowed
call setline(1, 'a') call setline(1, 'a')
@ -1294,7 +1294,7 @@ func! Test_edit_forbidden()
bw! bw!
endfunc endfunc
func! Test_edit_rightleft() func Test_edit_rightleft()
" Cursor in rightleft mode moves differently " Cursor in rightleft mode moves differently
if !exists("+rightleft") if !exists("+rightleft")
return return

View File

@ -1,6 +1,6 @@
" Test if fnameescape is correct for special chars like ! " Test if fnameescape is correct for special chars like !
function! Test_fnameescape() func Test_fnameescape()
let fname = 'Xspa ce' let fname = 'Xspa ce'
let status = v:false let status = v:false
try try
@ -18,4 +18,4 @@ function! Test_fnameescape()
endtry endtry
call assert_true(status, "ExclamationMark") call assert_true(status, "ExclamationMark")
call delete(fname) call delete(fname)
endfunction endfunc

View File

@ -1,112 +1,112 @@
function! GetCwdInfo(win, tab) func GetCwdInfo(win, tab)
let tab_changed = 0 let tab_changed = 0
let mod = ":t" let mod = ":t"
if a:tab > 0 && a:tab != tabpagenr() if a:tab > 0 && a:tab != tabpagenr()
let tab_changed = 1 let tab_changed = 1
exec "tabnext " . a:tab exec "tabnext " . a:tab
endif endif
let bufname = fnamemodify(bufname(winbufnr(a:win)), mod) let bufname = fnamemodify(bufname(winbufnr(a:win)), mod)
if tab_changed if tab_changed
tabprevious tabprevious
endif endif
if a:win == 0 && a:tab == 0 if a:win == 0 && a:tab == 0
let dirname = fnamemodify(getcwd(), mod) let dirname = fnamemodify(getcwd(), mod)
let lflag = haslocaldir() let lflag = haslocaldir()
elseif a:tab == 0 elseif a:tab == 0
let dirname = fnamemodify(getcwd(a:win), mod) let dirname = fnamemodify(getcwd(a:win), mod)
let lflag = haslocaldir(a:win) let lflag = haslocaldir(a:win)
else else
let dirname = fnamemodify(getcwd(a:win, a:tab), mod) let dirname = fnamemodify(getcwd(a:win, a:tab), mod)
let lflag = haslocaldir(a:win, a:tab) let lflag = haslocaldir(a:win, a:tab)
endif endif
return bufname . ' ' . dirname . ' ' . lflag return bufname . ' ' . dirname . ' ' . lflag
endfunction endfunc
" Do all test in a separate window to avoid E211 when we recursively " Do all test in a separate window to avoid E211 when we recursively
" delete the Xtopdir directory during cleanup " delete the Xtopdir directory during cleanup
function SetUp() function SetUp()
set visualbell set visualbell
set nocp viminfo+=nviminfo set nocp viminfo+=nviminfo
" On windows a swapfile in Xtopdir prevents it from being cleaned up. " On windows a swapfile in Xtopdir prevents it from being cleaned up.
set noswapfile set noswapfile
" On windows a stale "Xtopdir" directory may exist, remove it so that " On windows a stale "Xtopdir" directory may exist, remove it so that
" we start from a clean state. " we start from a clean state.
call delete("Xtopdir", "rf") call delete("Xtopdir", "rf")
new new
call mkdir('Xtopdir') call mkdir('Xtopdir')
cd Xtopdir cd Xtopdir
let g:topdir = getcwd() let g:topdir = getcwd()
call mkdir('Xdir1') call mkdir('Xdir1')
call mkdir('Xdir2') call mkdir('Xdir2')
call mkdir('Xdir3') call mkdir('Xdir3')
endfunction endfunction
let g:cwd=getcwd() let g:cwd=getcwd()
function TearDown() function TearDown()
q q
exec "cd " . g:cwd exec "cd " . g:cwd
call delete("Xtopdir", "rf") call delete("Xtopdir", "rf")
endfunction endfunction
function Test_GetCwd() function Test_GetCwd()
new a new a
new b new b
new c new c
3wincmd w 3wincmd w
lcd Xdir1 lcd Xdir1
call assert_equal("a Xdir1 1", GetCwdInfo(0, 0)) call assert_equal("a Xdir1 1", GetCwdInfo(0, 0))
call assert_equal(g:topdir, getcwd(-1)) call assert_equal(g:topdir, getcwd(-1))
wincmd W wincmd W
call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0)) call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0))
call assert_equal(g:topdir, getcwd(-1)) call assert_equal(g:topdir, getcwd(-1))
wincmd W wincmd W
lcd Xdir3 lcd Xdir3
call assert_equal("c Xdir3 1", GetCwdInfo(0, 0)) call assert_equal("c Xdir3 1", GetCwdInfo(0, 0))
call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0)) call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0))
call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0)) call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0))
call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0)) call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0))
call assert_equal(g:topdir, getcwd(-1)) call assert_equal(g:topdir, getcwd(-1))
wincmd W wincmd W
call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr())) call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr()))
call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr())) call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr()))
call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr())) call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr()))
call assert_equal(g:topdir, getcwd(-1)) call assert_equal(g:topdir, getcwd(-1))
tabnew x tabnew x
new y new y
new z new z
3wincmd w 3wincmd w
call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0)) call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0))
call assert_equal(g:topdir, getcwd(-1)) call assert_equal(g:topdir, getcwd(-1))
wincmd W wincmd W
lcd Xdir2 lcd Xdir2
call assert_equal("y Xdir2 1", GetCwdInfo(0, 0)) call assert_equal("y Xdir2 1", GetCwdInfo(0, 0))
call assert_equal(g:topdir, getcwd(-1)) call assert_equal(g:topdir, getcwd(-1))
wincmd W wincmd W
lcd Xdir3 lcd Xdir3
call assert_equal("z Xdir3 1", GetCwdInfo(0, 0)) call assert_equal("z Xdir3 1", GetCwdInfo(0, 0))
call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0)) call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0))
call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0)) call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0))
call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0)) call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0))
call assert_equal(g:topdir, getcwd(-1)) call assert_equal(g:topdir, getcwd(-1))
let tp_nr = tabpagenr() let tp_nr = tabpagenr()
tabrewind tabrewind
call assert_equal("x Xtopdir 0", GetCwdInfo(3, tp_nr)) call assert_equal("x Xtopdir 0", GetCwdInfo(3, tp_nr))
call assert_equal("y Xdir2 1", GetCwdInfo(2, tp_nr)) call assert_equal("y Xdir2 1", GetCwdInfo(2, tp_nr))
call assert_equal("z Xdir3 1", GetCwdInfo(1, tp_nr)) call assert_equal("z Xdir3 1", GetCwdInfo(1, tp_nr))
call assert_equal(g:topdir, getcwd(-1)) call assert_equal(g:topdir, getcwd(-1))
endfunc endfunc
function Test_GetCwd_lcd_shellslash() function Test_GetCwd_lcd_shellslash()
new new
let root = fnamemodify('/', ':p') let root = fnamemodify('/', ':p')
exe 'lcd '.root exe 'lcd '.root
let cwd = getcwd() let cwd = getcwd()
if !exists('+shellslash') || &shellslash if !exists('+shellslash') || &shellslash
call assert_equal(cwd[-1:], '/') call assert_equal(cwd[-1:], '/')
else else
call assert_equal(cwd[-1:], '\') call assert_equal(cwd[-1:], '\')
endif endif
endfunc endfunc

View File

@ -39,15 +39,15 @@ func Test_highlight()
call assert_fails("hi Crash term='asdf", "E475:") call assert_fails("hi Crash term='asdf", "E475:")
endfunc endfunc
function! HighlightArgs(name) func HighlightArgs(name)
return 'hi ' . substitute(split(execute('hi ' . a:name), '\n')[0], '\<xxx\>', '', '') return 'hi ' . substitute(split(execute('hi ' . a:name), '\n')[0], '\<xxx\>', '', '')
endfunction endfunc
function! IsColorable() func IsColorable()
return has('gui_running') || str2nr(&t_Co) >= 8 return has('gui_running') || str2nr(&t_Co) >= 8
endfunction endfunc
function! HiCursorLine() func HiCursorLine()
let hiCursorLine = HighlightArgs('CursorLine') let hiCursorLine = HighlightArgs('CursorLine')
if has('gui_running') if has('gui_running')
let guibg = matchstr(hiCursorLine, 'guibg=\w\+') let guibg = matchstr(hiCursorLine, 'guibg=\w\+')
@ -58,9 +58,9 @@ function! HiCursorLine()
let hi_bg = 'hi CursorLine cterm=NONE ctermbg=Gray' let hi_bg = 'hi CursorLine cterm=NONE ctermbg=Gray'
endif endif
return [hiCursorLine, hi_ul, hi_bg] return [hiCursorLine, hi_ul, hi_bg]
endfunction endfunc
function! Check_lcs_eol_attrs(attrs, row, col) func Check_lcs_eol_attrs(attrs, row, col)
let save_lcs = &lcs let save_lcs = &lcs
set list set list
@ -68,7 +68,7 @@ function! Check_lcs_eol_attrs(attrs, row, col)
set nolist set nolist
let &lcs = save_lcs let &lcs = save_lcs
endfunction endfunc
func Test_highlight_eol_with_cursorline() func Test_highlight_eol_with_cursorline()
let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine() let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine()

View File

@ -1,6 +1,6 @@
" Test for v:hlsearch " Test for v:hlsearch
function! Test_hlsearch() func Test_hlsearch()
new new
call setline(1, repeat(['aaa'], 10)) call setline(1, repeat(['aaa'], 10))
set hlsearch nolazyredraw set hlsearch nolazyredraw
@ -30,7 +30,7 @@ function! Test_hlsearch()
call garbagecollect(1) call garbagecollect(1)
call getchar(1) call getchar(1)
enew! enew!
endfunction endfunc
func Test_hlsearch_hangs() func Test_hlsearch_hangs()
if !has('reltime') || !has('float') if !has('reltime') || !has('float')

View File

@ -150,6 +150,59 @@ func Test_let_utf8_environment()
call assert_equal('ĀĒĪŌŪあいうえお', $a) call assert_equal('ĀĒĪŌŪあいうえお', $a)
endfunc endfunc
func Test_let_no_type_checking()
let v = 1
let v = [1,2,3]
let v = {'a': 1, 'b': 2}
let v = 3.4
let v = 'hello'
endfunc
func Test_let_termcap()
throw 'skipped: Nvim does not support termcap option'
" Terminal code
let old_t_te = &t_te
let &t_te = "\<Esc>[yes;"
call assert_match('t_te.*^[[yes;', execute("set termcap"))
let &t_te = old_t_te
if exists("+t_k1")
" Key code
let old_t_k1 = &t_k1
let &t_k1 = "that"
call assert_match('t_k1.*that', execute("set termcap"))
let &t_k1 = old_t_k1
endif
call assert_fails('let x = &t_xx', 'E113')
let &t_xx = "yes"
call assert_equal("yes", &t_xx)
let &t_xx = ""
call assert_fails('let x = &t_xx', 'E113')
endfunc
func Test_let_option_error()
let _w = &tw
let &tw = 80
call assert_fails('let &tw .= 1', 'E734')
call assert_equal(80, &tw)
let &tw = _w
let _w = &fillchars
let &fillchars = "vert:|"
call assert_fails('let &fillchars += "diff:-"', 'E734')
call assert_equal("vert:|", &fillchars)
let &fillchars = _w
endfunc
func Test_let_errors()
let s = 'abcd'
call assert_fails('let s[1] = 5', 'E689:')
let l = [1, 2, 3]
call assert_fails('let l[:] = 5', 'E709:')
endfunc
func Test_let_heredoc_fails() func Test_let_heredoc_fails()
call assert_fails('let v =<< marker', 'E991:') call assert_fails('let v =<< marker', 'E991:')

View File

@ -16,9 +16,9 @@ function s:screen_lines(lnum, width) abort
return ScreenLines(a:lnum, a:width) return ScreenLines(a:lnum, a:width)
endfunction endfunction
function! s:compare_lines(expect, actual) func s:compare_lines(expect, actual)
call assert_equal(join(a:expect, "\n"), join(a:actual, "\n")) call assert_equal(join(a:expect, "\n"), join(a:actual, "\n"))
endfunction endfunc
function s:test_windows(...) function s:test_windows(...)
call NewWindow(10, 20) call NewWindow(10, 20)

View File

@ -9,15 +9,15 @@ endif
source view_util.vim source view_util.vim
function s:screen_lines(lnum, width) abort func s:screen_lines(lnum, width) abort
return ScreenLines(a:lnum, a:width) return ScreenLines(a:lnum, a:width)
endfunction endfunc
function! s:compare_lines(expect, actual) func s:compare_lines(expect, actual)
call assert_equal(a:expect, a:actual) call assert_equal(a:expect, a:actual)
endfunction endfunc
function s:screen_attr(lnum, chars, ...) abort func s:screen_attr(lnum, chars, ...) abort
let line = getline(a:lnum) let line = getline(a:lnum)
let attr = [] let attr = []
let prefix = get(a:000, 0, 0) let prefix = get(a:000, 0, 0)
@ -26,18 +26,18 @@ function s:screen_attr(lnum, chars, ...) abort
let attr += [screenattr(a:lnum, scol + prefix)] let attr += [screenattr(a:lnum, scol + prefix)]
endfor endfor
return attr return attr
endfunction endfunc
function s:test_windows(...) func s:test_windows(...)
call NewWindow(10, 20) call NewWindow(10, 20)
setl ts=4 sw=4 sts=4 linebreak sbr=+ wrap setl ts=4 sw=4 sts=4 linebreak sbr=+ wrap
exe get(a:000, 0, '') exe get(a:000, 0, '')
endfunction endfunc
function s:close_windows(...) func s:close_windows(...)
call CloseWindow() call CloseWindow()
exe get(a:000, 0, '') exe get(a:000, 0, '')
endfunction endfunc
func Test_linebreak_with_fancy_listchars() func Test_linebreak_with_fancy_listchars()
call s:test_windows("setl list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6") call s:test_windows("setl list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6")

View File

@ -27,9 +27,9 @@ function! Test_simple_matchadd()
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16)) call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
quit! quit!
endfunction endfunc
function! Test_simple_matchadd_and_conceal() func Test_simple_matchadd_and_conceal()
new new
setlocal concealcursor=n conceallevel=1 setlocal concealcursor=n conceallevel=1
@ -49,9 +49,9 @@ function! Test_simple_matchadd_and_conceal()
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16)) call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
quit! quit!
endfunction endfunc
function! Test_matchadd_and_conceallevel_3() func Test_matchadd_and_conceallevel_3()
new new
setlocal conceallevel=3 setlocal conceallevel=3
@ -90,9 +90,9 @@ function! Test_matchadd_and_conceallevel_3()
syntax off syntax off
quit! quit!
endfunction endfunc
function! Test_default_conceal_char() func Test_default_conceal_char()
new new
setlocal concealcursor=n conceallevel=1 setlocal concealcursor=n conceallevel=1
@ -126,9 +126,9 @@ function! Test_default_conceal_char()
let &listchars = listchars_save let &listchars = listchars_save
quit! quit!
endfunction endfunc
function! Test_syn_and_match_conceal() func Test_syn_and_match_conceal()
new new
setlocal concealcursor=n conceallevel=1 setlocal concealcursor=n conceallevel=1
@ -162,9 +162,9 @@ function! Test_syn_and_match_conceal()
syntax off syntax off
quit! quit!
endfunction endfunc
function! Test_clearmatches() func Test_clearmatches()
new new
setlocal concealcursor=n conceallevel=1 setlocal concealcursor=n conceallevel=1
@ -201,9 +201,9 @@ function! Test_clearmatches()
call assert_equal({'group': 'Conceal', 'pattern': '\%2l ', 'priority': 10, 'id': a[0].id, 'conceal': 'Z'}, a[0]) call assert_equal({'group': 'Conceal', 'pattern': '\%2l ', 'priority': 10, 'id': a[0].id, 'conceal': 'Z'}, a[0])
quit! quit!
endfunction endfunc
function! Test_using_matchaddpos() func Test_using_matchaddpos()
new new
setlocal concealcursor=n conceallevel=1 setlocal concealcursor=n conceallevel=1
" set filetype and :syntax on to change screenattr() " set filetype and :syntax on to change screenattr()
@ -232,9 +232,9 @@ function! Test_using_matchaddpos()
syntax off syntax off
quit! quit!
endfunction endfunc
function! Test_matchadd_repeat_conceal_with_syntax_off() func Test_matchadd_repeat_conceal_with_syntax_off()
new new
" To test targets in the same line string is replaced with conceal char " To test targets in the same line string is replaced with conceal char
@ -251,9 +251,9 @@ function! Test_matchadd_repeat_conceal_with_syntax_off()
call assert_equal('t_tt', Screenline(2)) call assert_equal('t_tt', Screenline(2))
quit! quit!
endfunction endfunc
function! Test_matchadd_and_syn_conceal() func Test_matchadd_and_syn_conceal()
new new
let cnt='Inductive bool : Type := | true : bool | false : bool.' let cnt='Inductive bool : Type := | true : bool | false : bool.'
let expect = 'Inductive - : Type := | true : - | false : -.' let expect = 'Inductive - : Type := | true : - | false : -.'

View File

@ -36,4 +36,4 @@ function! Test_match_using_multibyte_conceal_char()
call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16)) call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
quit! quit!
endfunction endfunc

View File

@ -2,23 +2,23 @@
source view_util.vim source view_util.vim
func! s:screen_lines(start, end) abort func s:screen_lines(start, end) abort
return ScreenLines([a:start, a:end], 8) return ScreenLines([a:start, a:end], 8)
endfunc endfunc
func! s:compare_lines(expect, actual) func s:compare_lines(expect, actual)
call assert_equal(a:expect, a:actual) call assert_equal(a:expect, a:actual)
endfunc endfunc
func! s:test_windows(h, w) abort func s:test_windows(h, w) abort
call NewWindow(a:h, a:w) call NewWindow(a:h, a:w)
endfunc endfunc
func! s:close_windows() abort func s:close_windows() abort
call CloseWindow() call CloseWindow()
endfunc endfunc
func! s:validate_cursor() abort func s:validate_cursor() abort
" update skipcol. " update skipcol.
" wincol(): " wincol():
" f_wincol " f_wincol

View File

@ -1,6 +1,6 @@
" Test for options " Test for options
function! Test_whichwrap() func Test_whichwrap()
set whichwrap=b,s set whichwrap=b,s
call assert_equal('b,s', &whichwrap) call assert_equal('b,s', &whichwrap)

View File

@ -113,9 +113,9 @@ func Test_function_in_dict()
call OuterCall() call OuterCall()
endfunc endfunc
function! s:cache_clear() dict func s:cache_clear() dict
return self.name return self.name
endfunction endfunc
func Test_script_function_in_dict() func Test_script_function_in_dict()
let s:obj = {'name': 'foo'} let s:obj = {'name': 'foo'}
@ -135,10 +135,10 @@ func Test_script_function_in_dict()
call assert_equal('bar', B()) call assert_equal('bar', B())
endfunc endfunc
function! s:cache_arg(arg) dict func s:cache_arg(arg) dict
let s:result = self.name . '/' . a:arg let s:result = self.name . '/' . a:arg
return s:result return s:result
endfunction endfunc
func Test_script_function_in_dict_arg() func Test_script_function_in_dict_arg()
let s:obj = {'name': 'foo'} let s:obj = {'name': 'foo'}

View File

@ -4485,4 +4485,62 @@ func Test_quickfix_window_fails_to_open()
call delete('XquickfixFails') call delete('XquickfixFails')
endfunc endfunc
" Test for updating the quickfix buffer whenever the assocaited quickfix list
" is changed.
func Xqfbuf_update(cchar)
call s:setup_commands(a:cchar)
Xexpr "F1:1:line1"
Xopen
call assert_equal(['F1|1| line1'], getline(1, '$'))
call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick)
" Test setqflist() using the 'lines' key in 'what'
" add a new entry
call g:Xsetlist([], 'a', {'lines' : ['F2:2: line2']})
call assert_equal(['F1|1| line1', 'F2|2| line2'], getline(1, '$'))
call assert_equal(2, g:Xgetlist({'changedtick' : 0}).changedtick)
" replace all the entries with a single entry
call g:Xsetlist([], 'r', {'lines' : ['F3:3: line3']})
call assert_equal(['F3|3| line3'], getline(1, '$'))
call assert_equal(3, g:Xgetlist({'changedtick' : 0}).changedtick)
" remove all the entries
call g:Xsetlist([], 'r', {'lines' : []})
call assert_equal([''], getline(1, '$'))
call assert_equal(4, g:Xgetlist({'changedtick' : 0}).changedtick)
" add a new list
call g:Xsetlist([], ' ', {'lines' : ['F4:4: line4']})
call assert_equal(['F4|4| line4'], getline(1, '$'))
call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick)
" Test setqflist() using the 'items' key in 'what'
" add a new entry
call g:Xsetlist([], 'a', {'items' : [{'filename' : 'F5', 'lnum' : 5, 'text' : 'line5'}]})
call assert_equal(['F4|4| line4', 'F5|5| line5'], getline(1, '$'))
call assert_equal(2, g:Xgetlist({'changedtick' : 0}).changedtick)
" replace all the entries with a single entry
call g:Xsetlist([], 'r', {'items' : [{'filename' : 'F6', 'lnum' : 6, 'text' : 'line6'}]})
call assert_equal(['F6|6| line6'], getline(1, '$'))
call assert_equal(3, g:Xgetlist({'changedtick' : 0}).changedtick)
" remove all the entries
call g:Xsetlist([], 'r', {'items' : []})
call assert_equal([''], getline(1, '$'))
call assert_equal(4, g:Xgetlist({'changedtick' : 0}).changedtick)
" add a new list
call g:Xsetlist([], ' ', {'items' : [{'filename' : 'F7', 'lnum' : 7, 'text' : 'line7'}]})
call assert_equal(['F7|7| line7'], getline(1, '$'))
call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick)
call g:Xsetlist([], ' ', {})
call assert_equal([''], getline(1, '$'))
call assert_equal(1, g:Xgetlist({'changedtick' : 0}).changedtick)
Xclose
endfunc
func Test_qfbuf_update()
call Xqfbuf_update('c')
call Xqfbuf_update('l')
endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@ -1,24 +1,24 @@
" Tests for smartindent " Tests for smartindent
" Tests for not doing smart indenting when it isn't set. " Tests for not doing smart indenting when it isn't set.
function! Test_nosmartindent() func Test_nosmartindent()
new new
call append(0, [" some test text", call append(0, [" some test text",
\ " test text", \ " test text",
\ "test text", \ "test text",
\ " test text"]) \ " test text"])
set nocindent nosmartindent autoindent set nocindent nosmartindent autoindent
exe "normal! gg/some\<CR>" exe "normal! gg/some\<CR>"
exe "normal! 2cc#test\<Esc>" exe "normal! 2cc#test\<Esc>"
call assert_equal(" #test", getline(1)) call assert_equal(" #test", getline(1))
enew! | close enew! | close
endfunction endfunc
function MyIndent() func MyIndent()
endfunction endfunc
" When 'indentexpr' is set, setting 'si' has no effect. " When 'indentexpr' is set, setting 'si' has no effect.
function Test_smartindent_has_no_effect() func Test_smartindent_has_no_effect()
new new
exe "normal! i\<Tab>one\<Esc>" exe "normal! i\<Tab>one\<Esc>"
set noautoindent set noautoindent
@ -36,6 +36,6 @@ function Test_smartindent_has_no_effect()
set smartindent& set smartindent&
set indentexpr& set indentexpr&
bwipe! bwipe!
endfunction endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@ -1,6 +1,6 @@
" Tests for multi-line regexps with ":s". " Tests for multi-line regexps with ":s".
function! Test_multiline_subst() func Test_multiline_subst()
enew! enew!
call append(0, ["1 aa", call append(0, ["1 aa",
\ "bb", \ "bb",
@ -38,9 +38,9 @@ function! Test_multiline_subst()
call assert_equal('7x7f', getline(12)) call assert_equal('7x7f', getline(12))
call assert_equal('xxxxx', getline(13)) call assert_equal('xxxxx', getline(13))
enew! enew!
endfunction endfunc
function! Test_substitute_variants() func Test_substitute_variants()
" Validate that all the 2-/3-letter variants which embed the flags into the " Validate that all the 2-/3-letter variants which embed the flags into the
" command name actually work. " command name actually work.
enew! enew!
@ -248,9 +248,9 @@ func Test_sub_cmd_4()
" List entry format: [input, cmd, output] " List entry format: [input, cmd, output]
let tests = [ ['aAa', "s/A/\\=substitute(submatch(0), '.', '\\', '')/", let tests = [ ['aAa', "s/A/\\=substitute(submatch(0), '.', '\\', '')/",
\ ['a\a']], \ ['a\a']],
\ ['bBb', "s/B/\\=substitute(submatch(0), '.', '\\', '')/", \ ['bBb', "s/B/\\=substitute(submatch(0), '.', '\\', '')/",
\ ['b\b']], \ ['b\b']],
\ ['cCc', "s/C/\\=substitute(submatch(0), '.', '\<C-V>\<C-M>', '')/", \ ['cCc', "s/C/\\=substitute(submatch(0), '.', '\<C-V>\<C-M>', '')/",
\ ["c\<C-V>", 'c']], \ ["c\<C-V>", 'c']],
\ ['dDd', "s/D/\\=substitute(submatch(0), '.', '\\\<C-V>\<C-M>', '')/", \ ['dDd', "s/D/\\=substitute(submatch(0), '.', '\\\<C-V>\<C-M>', '')/",

View File

@ -301,7 +301,7 @@ func Test_sentence_with_quotes()
%delete _ %delete _
endfunc endfunc
func! Test_sentence_with_cursor_on_delimiter() func Test_sentence_with_cursor_on_delimiter()
enew! enew!
call setline(1, "A '([sentence.])' A sentence.") call setline(1, "A '([sentence.])' A sentence.")

View File

@ -22,17 +22,17 @@ func Test_strchars()
endfunc endfunc
" Test for customlist completion " Test for customlist completion
function! CustomComplete1(lead, line, pos) func CustomComplete1(lead, line, pos)
return ['あ', 'い'] return ['あ', 'い']
endfunction endfunc
function! CustomComplete2(lead, line, pos) func CustomComplete2(lead, line, pos)
return ['あたし', 'あたま', 'あたりめ'] return ['あたし', 'あたま', 'あたりめ']
endfunction endfunc
function! CustomComplete3(lead, line, pos) func CustomComplete3(lead, line, pos)
return ['Nこ', 'Nん', 'Nぶ'] return ['Nこ', 'Nん', 'Nぶ']
endfunction endfunc
func Test_customlist_completion() func Test_customlist_completion()
command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo

View File

@ -29,26 +29,26 @@ function! Chk(a, b, result)
call Ch(a:a, '<?', a:b, 1) call Ch(a:a, '<?', a:b, 1)
call Ch(a:a, '>?', a:b, 0) call Ch(a:a, '>?', a:b, 0)
endif endif
endfunction endfunc
function! Check(a, b, result) func Check(a, b, result)
call Chk(a:a, a:b, a:result) call Chk(a:a, a:b, a:result)
call Chk(a:b, a:a, -a:result) call Chk(a:b, a:a, -a:result)
endfunction endfunc
function! LT(a, b) func LT(a, b)
call Check(a:a, a:b, -1) call Check(a:a, a:b, -1)
endfunction endfunc
function! GT(a, b) func GT(a, b)
call Check(a:a, a:b, 1) call Check(a:a, a:b, 1)
endfunction endfunc
function! EQ(a, b) func EQ(a, b)
call Check(a:a, a:b, 0) call Check(a:a, a:b, 0)
endfunction endfunc
function Test_comparisons() func Test_comparisons()
call EQ('', '') call EQ('', '')
call LT('', 'a') call LT('', 'a')
call EQ('abc', 'abc') call EQ('abc', 'abc')
@ -81,11 +81,11 @@ function Test_comparisons()
for n in range(0xC0, 0xFF) for n in range(0xC0, 0xFF)
call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n))
endfor endfor
endfunction endfunc
" test that g~ap changes one paragraph only. " test that g~ap changes one paragraph only.
function Test_gap() func Test_gap()
new new
call feedkeys("iabcd\n\ndefggg0g~ap", "tx") call feedkeys("iabcd\n\ndefggg0g~ap", "tx")
call assert_equal(["ABCD", "", "defg"], getline(1,3)) call assert_equal(["ABCD", "", "defg"], getline(1,3))
endfunction endfunc

View File

@ -5,11 +5,11 @@
" Test environment {{{1 " Test environment {{{1
"------------------------------------------------------------------------------- "-------------------------------------------------------------------------------
com! XpathINIT let g:Xpath = '' com! XpathINIT let g:Xpath = ''
com! -nargs=1 -bar Xpath let g:Xpath = g:Xpath . <args> com! -nargs=1 -bar Xpath let g:Xpath = g:Xpath . <args>
" Append a message to the "messages" file " Append a message to the "messages" file
func! Xout(text) func Xout(text)
split messages split messages
$put =a:text $put =a:text
wq wq
@ -50,7 +50,7 @@ function! MakeScript(funcname, ...)
write write
bwipeout bwipeout
return script return script
endfunction endfunc
" ExecAsScript - Source a temporary script made from a function. {{{2 " ExecAsScript - Source a temporary script made from a function. {{{2
" "
@ -301,9 +301,9 @@ XpathINIT
" "
let calls = "" let calls = ""
com! -nargs=1 CALL com! -nargs=1 CALL
\ if !exists("calls") && !exists("outer") | \ if !exists("calls") && !exists("outer") |
\ let g:calls = g:calls . <args> | \ let g:calls = g:calls . <args> |
\ endif \ endif
let i = 0 let i = 0
while i < 3 while i < 3
@ -357,7 +357,7 @@ endif
if exists("*F1") if exists("*F1")
call F1("F1") call F1("F1")
if exists("*G1") if exists("*G1")
call G1("G1") call G1("G1")
endif endif
endif endif
@ -367,13 +367,13 @@ endif
if exists("*F2") if exists("*F2")
call F2(2, "F2") call F2(2, "F2")
if exists("*G21") if exists("*G21")
call G21("G21") call G21("G21")
endif endif
if exists("*G22") if exists("*G22")
call G22("G22") call G22("G22")
endif endif
if exists("*G23") if exists("*G23")
call G23("G23") call G23("G23")
endif endif
endif endif
@ -383,13 +383,13 @@ endif
if exists("*F3") if exists("*F3")
call F3(3, "F3") call F3(3, "F3")
if exists("*G31") if exists("*G31")
call G31("G31") call G31("G31")
endif endif
if exists("*G32") if exists("*G32")
call G32("G32") call G32("G32")
endif endif
if exists("*G33") if exists("*G33")
call G33("G33") call G33("G33")
endif endif
endif endif
@ -640,7 +640,7 @@ function! MSG(enr, emsg)
endif endif
endif endif
return match return match
endfunction endfunc
if 1 || strlen("\"") | Xpath 'a' if 1 || strlen("\"") | Xpath 'a'
Xpath 'b' Xpath 'b'
@ -1099,70 +1099,70 @@ endfunction
func Test_script_lines() func Test_script_lines()
" :append " :append
try try
call DefineFunction('T_Append', [ call DefineFunction('T_Append', [
\ 'append', \ 'append',
\ 'py <<EOS', \ 'py <<EOS',
\ '.', \ '.',
\ ]) \ ])
catch catch
call assert_report("Can't define function") call assert_report("Can't define function")
endtry endtry
try try
call DefineFunction('T_Append', [ call DefineFunction('T_Append', [
\ 'append', \ 'append',
\ 'abc', \ 'abc',
\ ]) \ ])
call assert_report("Shouldn't be able to define function") call assert_report("Shouldn't be able to define function")
catch catch
call assert_exception('Vim(function):E126: Missing :endfunction') call assert_exception('Vim(function):E126: Missing :endfunction')
endtry endtry
" :change " :change
try try
call DefineFunction('T_Change', [ call DefineFunction('T_Change', [
\ 'change', \ 'change',
\ 'py <<EOS', \ 'py <<EOS',
\ '.', \ '.',
\ ]) \ ])
catch catch
call assert_report("Can't define function") call assert_report("Can't define function")
endtry endtry
try try
call DefineFunction('T_Change', [ call DefineFunction('T_Change', [
\ 'change', \ 'change',
\ 'abc', \ 'abc',
\ ]) \ ])
call assert_report("Shouldn't be able to define function") call assert_report("Shouldn't be able to define function")
catch catch
call assert_exception('Vim(function):E126: Missing :endfunction') call assert_exception('Vim(function):E126: Missing :endfunction')
endtry endtry
" :insert " :insert
try try
call DefineFunction('T_Insert', [ call DefineFunction('T_Insert', [
\ 'insert', \ 'insert',
\ 'py <<EOS', \ 'py <<EOS',
\ '.', \ '.',
\ ]) \ ])
catch catch
call assert_report("Can't define function") call assert_report("Can't define function")
endtry endtry
try try
call DefineFunction('T_Insert', [ call DefineFunction('T_Insert', [
\ 'insert', \ 'insert',
\ 'abc', \ 'abc',
\ ]) \ ])
call assert_report("Shouldn't be able to define function") call assert_report("Shouldn't be able to define function")
catch catch
call assert_exception('Vim(function):E126: Missing :endfunction') call assert_exception('Vim(function):E126: Missing :endfunction')
endtry endtry
endfunc endfunc
"------------------------------------------------------------------------------- "-------------------------------------------------------------------------------
" Test 96: line continuation {{{1 " Test 96: line continuation {{{1
" "
" Undefined behavior was detected by ubsan with line continuation " Undefined behavior was detected by ubsan with line continuation
" after an empty line. " after an empty line.
"------------------------------------------------------------------------------- "-------------------------------------------------------------------------------
func Test_script_emty_line_continuation() func Test_script_emty_line_continuation()