To: vim_dev@googlegroups.com Subject: Patch 8.1.0711 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.0711 Problem: Test files still use function!. Solution: Remove the exclamation mark. Fix overwriting a function. Files: src/testdir/test49.vim, src/testdir/test_autocmd.vim, src/testdir/test_charsearch.vim, src/testdir/test_charsearch_utf8.vim, src/testdir/test_display.vim, src/testdir/test_edit.vim, src/testdir/test_eval_func.vim, src/testdir/test_fnameescape.vim, src/testdir/test_getcwd.vim, src/testdir/test_highlight.vim, src/testdir/test_hlsearch.vim, src/testdir/test_ins_complete.vim, src/testdir/test_lambda.vim, src/testdir/test_listdict.vim, src/testdir/test_listlbr.vim, src/testdir/test_listlbr_utf8.vim, src/testdir/test_marks.vim, src/testdir/test_matchadd_conceal.vim, src/testdir/test_matchadd_conceal_utf8.vim, src/testdir/test_messages.vim, src/testdir/test_number.vim, src/testdir/test_options.vim, src/testdir/test_partial.vim, src/testdir/test_smartindent.vim, src/testdir/test_substitute.vim, src/testdir/test_system.vim, src/testdir/test_terminal.vim, src/testdir/test_textobjects.vim, src/testdir/test_utf8.vim, src/testdir/test_utf8_comparisons.vim, src/testdir/test_vartabs.vim, src/testdir/test_vimscript.vim, src/testdir/test_window_cmd.vim, src/testdir/test_xxd.vim *** ../vim-8.1.0710/src/testdir/test49.vim 2017-02-23 18:49:31.000000000 +0100 --- src/testdir/test49.vim 2019-01-09 22:29:59.429878275 +0100 *************** *** 1,6 **** " Vim script language tests " Author: Servatius Brandt ! " Last Change: 2016 Feb 07 "------------------------------------------------------------------------------- " Test environment {{{1 --- 1,6 ---- " Vim script language tests " Author: Servatius Brandt ! " Last Change: 2019 Jan 09 "------------------------------------------------------------------------------- " Test environment {{{1 *************** *** 318,324 **** let ExtraVimBase = expand("") let ExtraVimTestEnv = "" " ! function! ExtraVim(...) " Count how often this function is called. let g:ExtraVimCount = g:ExtraVimCount + 1 --- 318,324 ---- let ExtraVimBase = expand("") let ExtraVimTestEnv = "" " ! function ExtraVim(...) " Count how often this function is called. let g:ExtraVimCount = g:ExtraVimCount + 1 *************** *** 500,506 **** " an ExtraVim script as passed by ExtraVim() in ExtraVimBegin. " " EXTRA_VIM_START - do not change or remove this line. ! function! ExtraVimThrowpoint() if !exists("g:ExtraVimBegin") Xout "ExtraVimThrowpoint() used outside ExtraVim() script." return v:throwpoint --- 500,506 ---- " an ExtraVim script as passed by ExtraVim() in ExtraVimBegin. " " EXTRA_VIM_START - do not change or remove this line. ! function ExtraVimThrowpoint() if !exists("g:ExtraVimBegin") Xout "ExtraVimThrowpoint() used outside ExtraVim() script." return v:throwpoint *************** *** 530,536 **** " as a script file, use ExecAsScript below. " " EXTRA_VIM_START - do not change or remove this line. ! function! MakeScript(funcname, ...) let script = tempname() execute "redir! >" . script execute "function" a:funcname --- 530,536 ---- " as a script file, use ExecAsScript below. " " EXTRA_VIM_START - do not change or remove this line. ! function MakeScript(funcname, ...) let script = tempname() execute "redir! >" . script execute "function" a:funcname *************** *** 568,574 **** " location specified in the function. " " EXTRA_VIM_START - do not change or remove this line. ! function! ExecAsScript(funcname) " Make a script from the function passed as argument. let script = MakeScript(a:funcname) --- 568,574 ---- " location specified in the function. " " EXTRA_VIM_START - do not change or remove this line. ! function ExecAsScript(funcname) " Make a script from the function passed as argument. let script = MakeScript(a:funcname) *************** *** 8548,8554 **** " Remove the autocommands for the events specified as arguments in all used " autogroups. ! function! Delete_autocommands(...) let augfile = tempname() while 1 try --- 8548,8554 ---- " Remove the autocommands for the events specified as arguments in all used " autogroups. ! function Delete_autocommands(...) let augfile = tempname() while 1 try *** ../vim-8.1.0710/src/testdir/test_autocmd.vim 2018-12-21 13:03:24.292337854 +0100 --- src/testdir/test_autocmd.vim 2019-01-09 22:30:57.069457594 +0100 *************** *** 2,8 **** source shared.vim ! func! s:cleanup_buffers() abort for bnr in range(1, bufnr('$')) if bufloaded(bnr) && bufnr('%') != bnr execute 'bd! ' . bnr --- 2,8 ---- source shared.vim ! func s:cleanup_buffers() abort for bnr in range(1, bufnr('$')) if bufloaded(bnr) && bufnr('%') != bnr execute 'bd! ' . bnr *************** *** 1343,1349 **** endfunc let g:setline_handled = v:false ! func! SetLineOne() if !g:setline_handled call setline(1, "(x)") let g:setline_handled = v:true --- 1343,1349 ---- endfunc let g:setline_handled = v:false ! func SetLineOne() if !g:setline_handled call setline(1, "(x)") let g:setline_handled = v:true *** ../vim-8.1.0710/src/testdir/test_charsearch.vim 2016-09-07 20:37:01.000000000 +0200 --- src/testdir/test_charsearch.vim 2019-01-09 22:31:27.609160734 +0100 *************** *** 1,5 **** ! function! Test_charsearch() enew! call append(0, ['Xabcdefghijkemnopqretuvwxyz', \ 'Yabcdefghijkemnopqretuvwxyz', --- 1,5 ---- ! func Test_charsearch() enew! call append(0, ['Xabcdefghijkemnopqretuvwxyz', \ 'Yabcdefghijkemnopqretuvwxyz', *************** *** 29,38 **** normal! ;;p call assert_equal('ZabcdeZfghijkZZemnokqretkZvwxyz', getline(3)) enew! ! endfunction " Test for t,f,F,T movement commands and 'cpo-;' setting ! function! Test_search_cmds() enew! call append(0, ["aaa two three four", " zzz", "yyy ", \ "bbb yee yoo four", "ccc two three four", --- 29,38 ---- normal! ;;p call assert_equal('ZabcdeZfghijkZZemnokqretkZvwxyz', getline(3)) enew! ! endfunc " Test for t,f,F,T movement commands and 'cpo-;' setting ! func Test_search_cmds() enew! call append(0, ["aaa two three four", " zzz", "yyy ", \ "bbb yee yoo four", "ccc two three four", *************** *** 59,62 **** call assert_equal('ccc', getline(5)) call assert_equal('ddd yee y', getline(6)) enew! ! endfunction --- 59,62 ---- call assert_equal('ccc', getline(5)) call assert_equal('ddd yee y', getline(6)) enew! ! endfunc *** ../vim-8.1.0710/src/testdir/test_charsearch_utf8.vim 2017-03-12 16:16:51.000000000 +0100 --- src/testdir/test_charsearch_utf8.vim 2019-01-09 22:31:48.896914212 +0100 *************** *** 4,10 **** endif " Test for t,f,F,T movement commands ! function! Test_search_cmds() new! call setline(1, "・最初から最後まで最強のVimは最高") 1 --- 4,10 ---- endif " Test for t,f,F,T movement commands ! func Test_search_cmds() new! call setline(1, "・最初から最後まで最強のVimは最高") 1 *************** *** 17,22 **** normal! , call assert_equal([0, 1, 28, 0], getpos('.')) bw! ! endfunction " vim: shiftwidth=2 sts=2 expandtab --- 17,22 ---- normal! , call assert_equal([0, 1, 28, 0], getpos('.')) bw! ! endfunc " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.1.0710/src/testdir/test_display.vim 2017-08-13 20:14:30.000000000 +0200 --- src/testdir/test_display.vim 2019-01-09 22:32:22.280533816 +0100 *************** *** 5,11 **** source view_util.vim ! func! Test_display_foldcolumn() if !has("folding") return endif --- 5,11 ---- source view_util.vim ! func Test_display_foldcolumn() if !has("folding") return endif *************** *** 38,44 **** quit! endfunc ! func! Test_display_foldtext_mbyte() if !has("folding") || !has("multi_byte") return endif --- 38,44 ---- quit! endfunc ! func Test_display_foldtext_mbyte() if !has("folding") || !has("multi_byte") return endif *** ../vim-8.1.0710/src/testdir/test_edit.vim 2018-11-02 11:59:11.555438565 +0100 --- src/testdir/test_edit.vim 2019-01-09 22:34:16.315285600 +0100 *************** *** 9,15 **** " Needs to come first until the bug in getchar() is " fixed: https://groups.google.com/d/msg/vim_dev/fXL9yme4H4c/bOR-U6_bAQAJ ! func! Test_edit_00b() new call setline(1, ['abc ']) inoreabbr h here some more --- 9,15 ---- " Needs to come first until the bug in getchar() is " fixed: https://groups.google.com/d/msg/vim_dev/fXL9yme4H4c/bOR-U6_bAQAJ ! func Test_edit_00b() new call setline(1, ['abc ']) inoreabbr h here some more *************** *** 21,27 **** bw! endfunc ! func! Test_edit_01() " set for Travis CI? " set nocp noesckeys new --- 21,27 ---- bw! endfunc ! func Test_edit_01() " set for Travis CI? " set nocp noesckeys new *************** *** 61,67 **** bw! endfunc ! func! Test_edit_02() " Change cursor position in InsertCharPre command new call setline(1, 'abc') --- 61,67 ---- bw! endfunc ! func Test_edit_02() " Change cursor position in InsertCharPre command new call setline(1, 'abc') *************** *** 101,107 **** bw! endfunc ! func! Test_edit_03() " Change cursor after command to end of line new call setline(1, 'abc') --- 101,107 ---- bw! endfunc ! func Test_edit_03() " Change cursor after command to end of line new call setline(1, 'abc') *************** *** 120,126 **** bw! endfunc ! func! Test_edit_04() " test for :stopinsert new call setline(1, 'abc') --- 120,126 ---- bw! endfunc ! func Test_edit_04() " test for :stopinsert new call setline(1, 'abc') *************** *** 132,138 **** bw! endfunc ! func! Test_edit_05() " test for folds being opened new call setline(1, ['abcX', 'abcX', 'zzzZ']) --- 132,138 ---- bw! endfunc ! func Test_edit_05() " test for folds being opened new call setline(1, ['abcX', 'abcX', 'zzzZ']) *************** *** 154,160 **** bw! endfunc ! func! Test_edit_06() " Test in diff mode if !has("diff") || !executable("diff") return --- 154,160 ---- bw! endfunc ! func Test_edit_06() " Test in diff mode if !has("diff") || !executable("diff") return *************** *** 176,182 **** bw! endfunc ! func! Test_edit_07() " 1) Test with completion when popupmenu is visible new call setline(1, 'J') --- 176,182 ---- bw! endfunc ! func Test_edit_07() " 1) Test with completion when popupmenu is visible new call setline(1, 'J') *************** *** 213,219 **** bw! endfunc ! func! Test_edit_08() " reset insertmode from i_ctrl-r_= let g:bufnr = bufnr('%') new --- 213,219 ---- bw! endfunc ! func Test_edit_08() " reset insertmode from i_ctrl-r_= let g:bufnr = bufnr('%') new *************** *** 227,233 **** unlet g:bufnr endfunc ! func! Test_edit_09() " test i_CTRL-\ combinations new call setline(1, ['abc', 'def', 'ghi']) --- 227,233 ---- unlet g:bufnr endfunc ! func Test_edit_09() " test i_CTRL-\ combinations new call setline(1, ['abc', 'def', 'ghi']) *************** *** 257,263 **** bw! endfunc ! func! Test_edit_10() " Test for starting selectmode new set selectmode=key keymodel=startsel --- 257,263 ---- bw! endfunc ! func Test_edit_10() " Test for starting selectmode new set selectmode=key keymodel=startsel *************** *** 269,275 **** bw! endfunc ! func! Test_edit_11() " Test that indenting kicks in new set cindent --- 269,275 ---- bw! endfunc ! func Test_edit_11() " Test that indenting kicks in new set cindent *************** *** 313,319 **** bw! endfunc ! func! Test_edit_11_indentexpr() " Test that indenting kicks in new " Use indentexpr instead of cindenting --- 313,319 ---- bw! endfunc ! func Test_edit_11_indentexpr() " Test that indenting kicks in new " Use indentexpr instead of cindenting *************** *** 340,346 **** bw! endfunc ! func! Test_edit_12() " Test changing indent in replace mode new call setline(1, ["\tabc", "\tdef"]) --- 340,346 ---- bw! endfunc ! func Test_edit_12() " Test changing indent in replace mode new call setline(1, ["\tabc", "\tdef"]) *************** *** 392,398 **** bw! endfunc ! func! Test_edit_13() " Test smartindenting if exists("+smartindent") new --- 392,398 ---- bw! endfunc ! func Test_edit_13() " Test smartindenting if exists("+smartindent") new *************** *** 405,411 **** endif endfunc ! func! Test_edit_CR() " Test for in insert mode " basically only in quickfix mode ist tested, the rest " has been taken care of by other tests --- 405,411 ---- endif endfunc ! func Test_edit_CR() " Test for in insert mode " basically only in quickfix mode ist tested, the rest " has been taken care of by other tests *************** *** 438,444 **** call delete('Xqflist.txt') endfunc ! func! Test_edit_CTRL_() " disabled for Windows builds, why? if !has("multi_byte") || !has("rightleft") || has("win32") return --- 438,444 ---- call delete('Xqflist.txt') endfunc ! func Test_edit_CTRL_() " disabled for Windows builds, why? if !has("multi_byte") || !has("rightleft") || has("win32") return *************** *** 469,475 **** endfunc " needs to come first, to have the @. register empty ! func! Test_edit_00a_CTRL_A() " Test pressing CTRL-A new call setline(1, repeat([''], 5)) --- 469,475 ---- endfunc " needs to come first, to have the @. register empty ! func Test_edit_00a_CTRL_A() " Test pressing CTRL-A new call setline(1, repeat([''], 5)) *************** *** 489,495 **** bw! endfunc ! func! Test_edit_CTRL_EY() " Ctrl-E/ Ctrl-Y in insert mode completion to scroll 10new call setline(1, range(1, 100)) --- 489,495 ---- bw! endfunc ! func Test_edit_CTRL_EY() " Ctrl-E/ Ctrl-Y in insert mode completion to scroll 10new call setline(1, range(1, 100)) *************** *** 505,511 **** bw! endfunc ! func! Test_edit_CTRL_G() new call setline(1, ['foobar', 'foobar', 'foobar']) call cursor(2, 4) --- 505,511 ---- bw! endfunc ! func Test_edit_CTRL_G() new call setline(1, ['foobar', 'foobar', 'foobar']) call cursor(2, 4) *************** *** 523,529 **** bw! endfunc ! func! Test_edit_CTRL_I() " Tab in completion mode let path=expand("%:p:h") new --- 523,529 ---- bw! endfunc ! func Test_edit_CTRL_I() " Tab in completion mode let path=expand("%:p:h") new *************** *** 547,553 **** bw! endfunc ! func! Test_edit_CTRL_K() " Test pressing CTRL-K (basically only dictionary completion and digraphs " the rest is already covered call writefile(['A', 'AA', 'AAA', 'AAAA'], 'Xdictionary.txt') --- 547,553 ---- bw! endfunc ! func Test_edit_CTRL_K() " Test pressing CTRL-K (basically only dictionary completion and digraphs " the rest is already covered call writefile(['A', 'AA', 'AAA', 'AAAA'], 'Xdictionary.txt') *************** *** 620,626 **** bw! endfunc ! func! Test_edit_CTRL_L() " Test Ctrl-X Ctrl-L (line completion) new set complete=. --- 620,626 ---- bw! endfunc ! func Test_edit_CTRL_L() " Test Ctrl-X Ctrl-L (line completion) new set complete=. *************** *** 676,682 **** bw! endfunc ! func! Test_edit_CTRL_N() " Check keyword completion new set complete=. --- 676,682 ---- bw! endfunc ! func Test_edit_CTRL_N() " Check keyword completion new set complete=. *************** *** 697,703 **** bw! endfunc ! func! Test_edit_CTRL_O() " Check for CTRL-O in insert mode new inoreabbr h here some more --- 697,703 ---- bw! endfunc ! func Test_edit_CTRL_O() " Check for CTRL-O in insert mode new inoreabbr h here some more *************** *** 722,728 **** bw! endfunc ! func! Test_edit_CTRL_R() " Insert Register new call test_override("ALL", 1) --- 722,728 ---- bw! endfunc ! func Test_edit_CTRL_R() " Insert Register new call test_override("ALL", 1) *************** *** 737,743 **** bw! endfunc ! func! Test_edit_CTRL_S() " Test pressing CTRL-S (basically only spellfile completion) " the rest is already covered new --- 737,743 ---- bw! endfunc ! func Test_edit_CTRL_S() " Test pressing CTRL-S (basically only spellfile completion) " the rest is already covered new *************** *** 781,787 **** bw! endfunc ! func! Test_edit_CTRL_T() " Check for CTRL-T and CTRL-X CTRL-T in insert mode " 1) increase indent new --- 781,787 ---- bw! endfunc ! func Test_edit_CTRL_T() " Check for CTRL-T and CTRL-X CTRL-T in insert mode " 1) increase indent new *************** *** 858,864 **** bw! endfunc ! func! Test_edit_CTRL_U() " Test 'completefunc' new " -1, -2 and -3 are special return values --- 858,864 ---- bw! endfunc ! func Test_edit_CTRL_U() " Test 'completefunc' new " -1, -2 and -3 are special return values *************** *** 917,923 **** bw! endfunc ! func! Test_edit_CTRL_Z() " Ctrl-Z when insertmode is not set inserts it literally new call setline(1, 'abc') --- 917,923 ---- bw! endfunc ! func Test_edit_CTRL_Z() " Ctrl-Z when insertmode is not set inserts it literally new call setline(1, 'abc') *************** *** 927,933 **** " TODO: How to Test Ctrl-Z in insert mode, e.g. suspend? endfunc ! func! Test_edit_DROP() if !has("dnd") return endif --- 927,933 ---- " TODO: How to Test Ctrl-Z in insert mode, e.g. suspend? endfunc ! func Test_edit_DROP() if !has("dnd") return endif *************** *** 943,949 **** bw! endfunc ! func! Test_edit_CTRL_V() if has("ebcdic") return endif --- 943,949 ---- bw! endfunc ! func Test_edit_CTRL_V() if has("ebcdic") return endif *************** *** 971,977 **** bw! endfunc ! func! Test_edit_F1() " Pressing new call feedkeys(":set im\\\", 'tnix') --- 971,977 ---- bw! endfunc ! func Test_edit_F1() " Pressing new call feedkeys(":set im\\\", 'tnix') *************** *** 981,987 **** bw endfunc ! func! Test_edit_F21() " Pressing " sends a netbeans command if has("netbeans_intg") --- 981,987 ---- bw endfunc ! func Test_edit_F21() " Pressing " sends a netbeans command if has("netbeans_intg") *************** *** 992,998 **** endif endfunc ! func! Test_edit_HOME_END() " Test Home/End Keys new set foldopen+=hor --- 992,998 ---- endif endfunc ! func Test_edit_HOME_END() " Test Home/End Keys new set foldopen+=hor *************** *** 1007,1013 **** bw! endfunc ! func! Test_edit_INS() " Test for Pressing new call setline(1, ['abc', 'def']) --- 1007,1013 ---- bw! endfunc ! func Test_edit_INS() " Test for Pressing new call setline(1, ['abc', 'def']) *************** *** 1021,1027 **** bw! endfunc ! func! Test_edit_LEFT_RIGHT() " Left, Shift-Left, Right, Shift-Right new call setline(1, ['abc def ghi', 'ABC DEF GHI', 'ZZZ YYY XXX']) --- 1021,1027 ---- bw! endfunc ! func Test_edit_LEFT_RIGHT() " Left, Shift-Left, Right, Shift-Right new call setline(1, ['abc def ghi', 'ABC DEF GHI', 'ZZZ YYY XXX']) *************** *** 1068,1074 **** bw! endfunc ! func! Test_edit_MOUSE() " This is a simple test, since we not really using the mouse here if !has("mouse") return --- 1068,1074 ---- bw! endfunc ! func Test_edit_MOUSE() " This is a simple test, since we not really using the mouse here if !has("mouse") return *************** *** 1123,1129 **** bw! endfunc ! func! Test_edit_PAGEUP_PAGEDOWN() 10new call setline(1, repeat(['abc def ghi'], 30)) call cursor(1, 1) --- 1123,1129 ---- bw! endfunc ! func Test_edit_PAGEUP_PAGEDOWN() 10new call setline(1, repeat(['abc def ghi'], 30)) call cursor(1, 1) *************** *** 1222,1228 **** bw! endfunc ! func! Test_edit_forbidden() new " 1) edit in the sandbox is not allowed call setline(1, 'a') --- 1222,1228 ---- bw! endfunc ! func Test_edit_forbidden() new " 1) edit in the sandbox is not allowed call setline(1, 'a') *************** *** 1282,1288 **** bw! endfunc ! func! Test_edit_rightleft() " Cursor in rightleft mode moves differently if !exists("+rightleft") return --- 1282,1288 ---- bw! endfunc ! func Test_edit_rightleft() " Cursor in rightleft mode moves differently if !exists("+rightleft") return *** ../vim-8.1.0710/src/testdir/test_eval_func.vim 2014-04-29 13:57:34.000000000 +0200 --- src/testdir/test_eval_func.vim 2019-01-09 22:34:29.947141160 +0100 *************** *** 1,6 **** " Vim script used in test_eval.in. Needed for script-local function. ! func! s:Testje() return "foo" endfunc let Bar = function('s:Testje') --- 1,6 ---- " Vim script used in test_eval.in. Needed for script-local function. ! func s:Testje() return "foo" endfunc let Bar = function('s:Testje') *** ../vim-8.1.0710/src/testdir/test_fnameescape.vim 2016-09-07 20:37:01.000000000 +0200 --- src/testdir/test_fnameescape.vim 2019-01-09 22:35:06.338760034 +0100 *************** *** 1,6 **** " Test if fnameescape is correct for special chars like ! ! function! Test_fnameescape() let fname = 'Xspa ce' let status = v:false try --- 1,6 ---- " Test if fnameescape is correct for special chars like ! ! func Test_fnameescape() let fname = 'Xspa ce' let status = v:false try *************** *** 18,21 **** endtry call assert_true(status, "ExclamationMark") call delete(fname) ! endfunction --- 18,21 ---- endtry call assert_true(status, "ExclamationMark") call delete(fname) ! endfunc *** ../vim-8.1.0710/src/testdir/test_getcwd.vim 2018-09-23 19:36:10.215763496 +0200 --- src/testdir/test_getcwd.vim 2019-01-09 22:35:35.954454435 +0100 *************** *** 1,112 **** ! function! GetCwdInfo(win, tab) ! let tab_changed = 0 ! let mod = ":t" ! if a:tab > 0 && a:tab != tabpagenr() ! let tab_changed = 1 ! exec "tabnext " . a:tab ! endif ! let bufname = fnamemodify(bufname(winbufnr(a:win)), mod) ! if tab_changed ! tabprevious ! endif ! if a:win == 0 && a:tab == 0 ! let dirname = fnamemodify(getcwd(), mod) ! let lflag = haslocaldir() ! elseif a:tab == 0 ! let dirname = fnamemodify(getcwd(a:win), mod) ! let lflag = haslocaldir(a:win) ! else ! let dirname = fnamemodify(getcwd(a:win, a:tab), mod) ! let lflag = haslocaldir(a:win, a:tab) ! endif ! return bufname . ' ' . dirname . ' ' . lflag ! endfunction " Do all test in a separate window to avoid E211 when we recursively " delete the Xtopdir directory during cleanup function SetUp() ! set visualbell ! set nocp viminfo+=nviminfo ! " On windows a swapfile in Xtopdir prevents it from being cleaned up. ! set noswapfile ! " On windows a stale "Xtopdir" directory may exist, remove it so that ! " we start from a clean state. ! call delete("Xtopdir", "rf") ! new ! call mkdir('Xtopdir') ! cd Xtopdir ! let g:topdir = getcwd() ! call mkdir('Xdir1') ! call mkdir('Xdir2') ! call mkdir('Xdir3') endfunction let g:cwd=getcwd() function TearDown() ! q ! exec "cd " . g:cwd ! call delete("Xtopdir", "rf") endfunction function Test_GetCwd() ! new a ! new b ! new c ! 3wincmd w ! lcd Xdir1 ! call assert_equal("a Xdir1 1", GetCwdInfo(0, 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! lcd Xdir3 ! call assert_equal("c Xdir3 1", GetCwdInfo(0, 0)) ! call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0)) ! call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0)) ! call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr())) ! call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr())) ! call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr())) ! call assert_equal(g:topdir, getcwd(-1)) ! ! tabnew x ! new y ! new z ! 3wincmd w ! call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! lcd Xdir2 ! call assert_equal("y Xdir2 1", GetCwdInfo(0, 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! lcd Xdir3 ! call assert_equal("z Xdir3 1", GetCwdInfo(0, 0)) ! call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0)) ! call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0)) ! call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! let tp_nr = tabpagenr() ! tabrewind ! call assert_equal("x Xtopdir 0", GetCwdInfo(3, 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(g:topdir, getcwd(-1)) endfunc function Test_GetCwd_lcd_shellslash() ! new ! let root = fnamemodify('/', ':p') ! exe 'lcd '.root ! let cwd = getcwd() ! if !exists('+shellslash') || &shellslash ! call assert_equal(cwd[-1:], '/') ! else ! call assert_equal(cwd[-1:], '\') ! endif endfunc --- 1,112 ---- ! func GetCwdInfo(win, tab) ! let tab_changed = 0 ! let mod = ":t" ! if a:tab > 0 && a:tab != tabpagenr() ! let tab_changed = 1 ! exec "tabnext " . a:tab ! endif ! let bufname = fnamemodify(bufname(winbufnr(a:win)), mod) ! if tab_changed ! tabprevious ! endif ! if a:win == 0 && a:tab == 0 ! let dirname = fnamemodify(getcwd(), mod) ! let lflag = haslocaldir() ! elseif a:tab == 0 ! let dirname = fnamemodify(getcwd(a:win), mod) ! let lflag = haslocaldir(a:win) ! else ! let dirname = fnamemodify(getcwd(a:win, a:tab), mod) ! let lflag = haslocaldir(a:win, a:tab) ! endif ! return bufname . ' ' . dirname . ' ' . lflag ! endfunc " Do all test in a separate window to avoid E211 when we recursively " delete the Xtopdir directory during cleanup function SetUp() ! set visualbell ! set nocp viminfo+=nviminfo ! " On windows a swapfile in Xtopdir prevents it from being cleaned up. ! set noswapfile ! " On windows a stale "Xtopdir" directory may exist, remove it so that ! " we start from a clean state. ! call delete("Xtopdir", "rf") ! new ! call mkdir('Xtopdir') ! cd Xtopdir ! let g:topdir = getcwd() ! call mkdir('Xdir1') ! call mkdir('Xdir2') ! call mkdir('Xdir3') endfunction let g:cwd=getcwd() function TearDown() ! q ! exec "cd " . g:cwd ! call delete("Xtopdir", "rf") endfunction function Test_GetCwd() ! new a ! new b ! new c ! 3wincmd w ! lcd Xdir1 ! call assert_equal("a Xdir1 1", GetCwdInfo(0, 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! call assert_equal("b Xtopdir 0", GetCwdInfo(0, 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! lcd Xdir3 ! call assert_equal("c Xdir3 1", GetCwdInfo(0, 0)) ! call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), 0)) ! call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), 0)) ! call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! call assert_equal("a Xdir1 1", GetCwdInfo(bufwinnr("a"), tabpagenr())) ! call assert_equal("b Xtopdir 0", GetCwdInfo(bufwinnr("b"), tabpagenr())) ! call assert_equal("c Xdir3 1", GetCwdInfo(bufwinnr("c"), tabpagenr())) ! call assert_equal(g:topdir, getcwd(-1)) ! ! tabnew x ! new y ! new z ! 3wincmd w ! call assert_equal("x Xtopdir 0", GetCwdInfo(0, 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! lcd Xdir2 ! call assert_equal("y Xdir2 1", GetCwdInfo(0, 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! wincmd W ! lcd Xdir3 ! call assert_equal("z Xdir3 1", GetCwdInfo(0, 0)) ! call assert_equal("x Xtopdir 0", GetCwdInfo(bufwinnr("x"), 0)) ! call assert_equal("y Xdir2 1", GetCwdInfo(bufwinnr("y"), 0)) ! call assert_equal("z Xdir3 1", GetCwdInfo(bufwinnr("z"), 0)) ! call assert_equal(g:topdir, getcwd(-1)) ! let tp_nr = tabpagenr() ! tabrewind ! call assert_equal("x Xtopdir 0", GetCwdInfo(3, 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(g:topdir, getcwd(-1)) endfunc function Test_GetCwd_lcd_shellslash() ! new ! let root = fnamemodify('/', ':p') ! exe 'lcd '.root ! let cwd = getcwd() ! if !exists('+shellslash') || &shellslash ! call assert_equal(cwd[-1:], '/') ! else ! call assert_equal(cwd[-1:], '\') ! endif endfunc *** ../vim-8.1.0710/src/testdir/test_highlight.vim 2018-03-12 22:16:02.000000000 +0100 --- src/testdir/test_highlight.vim 2019-01-09 22:36:26.589940740 +0100 *************** *** 38,52 **** call assert_fails("hi Crash term='asdf", "E475:") endfunc ! function! HighlightArgs(name) return 'hi ' . substitute(split(execute('hi ' . a:name), '\n')[0], '\', '', '') ! endfunction ! function! IsColorable() return has('gui_running') || str2nr(&t_Co) >= 8 ! endfunction ! function! HiCursorLine() let hiCursorLine = HighlightArgs('CursorLine') if has('gui_running') let guibg = matchstr(hiCursorLine, 'guibg=\w\+') --- 38,52 ---- call assert_fails("hi Crash term='asdf", "E475:") endfunc ! func HighlightArgs(name) return 'hi ' . substitute(split(execute('hi ' . a:name), '\n')[0], '\', '', '') ! endfunc ! func IsColorable() return has('gui_running') || str2nr(&t_Co) >= 8 ! endfunc ! func HiCursorLine() let hiCursorLine = HighlightArgs('CursorLine') if has('gui_running') let guibg = matchstr(hiCursorLine, 'guibg=\w\+') *************** *** 57,65 **** let hi_bg = 'hi CursorLine cterm=NONE ctermbg=Gray' endif return [hiCursorLine, hi_ul, hi_bg] ! endfunction ! function! Check_lcs_eol_attrs(attrs, row, col) let save_lcs = &lcs set list --- 57,65 ---- let hi_bg = 'hi CursorLine cterm=NONE ctermbg=Gray' endif return [hiCursorLine, hi_ul, hi_bg] ! endfunc ! func Check_lcs_eol_attrs(attrs, row, col) let save_lcs = &lcs set list *************** *** 67,73 **** set nolist let &lcs = save_lcs ! endfunction func Test_highlight_eol_with_cursorline() let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine() --- 67,73 ---- set nolist let &lcs = save_lcs ! endfunc func Test_highlight_eol_with_cursorline() let [hiCursorLine, hi_ul, hi_bg] = HiCursorLine() *** ../vim-8.1.0710/src/testdir/test_hlsearch.vim 2018-09-02 15:07:21.977655529 +0200 --- src/testdir/test_hlsearch.vim 2019-01-09 22:36:38.901817415 +0100 *************** *** 1,6 **** " Test for v:hlsearch ! function! Test_hlsearch() new call setline(1, repeat(['aaa'], 10)) set hlsearch nolazyredraw --- 1,6 ---- " Test for v:hlsearch ! func Test_hlsearch() new call setline(1, repeat(['aaa'], 10)) set hlsearch nolazyredraw *************** *** 30,36 **** call garbagecollect(1) call getchar(1) enew! ! endfunction func Test_hlsearch_hangs() if !has('reltime') || !has('float') --- 30,36 ---- call garbagecollect(1) call getchar(1) enew! ! endfunc func Test_hlsearch_hangs() if !has('reltime') || !has('float') *** ../vim-8.1.0710/src/testdir/test_ins_complete.vim 2018-08-08 22:55:38.030420901 +0200 --- src/testdir/test_ins_complete.vim 2019-01-09 22:37:57.473043665 +0100 *************** *** 142,148 **** delfunc CompleteFunc endfunc ! function! s:CompleteDone_CompleteFuncDict( findstart, base ) if a:findstart return 0 endif --- 142,148 ---- delfunc CompleteFunc endfunc ! func s:CompleteDone_CompleteFuncDict( findstart, base ) if a:findstart return 0 endif *************** *** 159,167 **** \ } \ ] \ } ! endfunction ! function! s:CompleteDone_CheckCompletedItemDict() call assert_equal( 'aword', v:completed_item[ 'word' ] ) call assert_equal( 'wrd', v:completed_item[ 'abbr' ] ) call assert_equal( 'extra text', v:completed_item[ 'menu' ] ) --- 159,167 ---- \ } \ ] \ } ! endfunc ! func s:CompleteDone_CheckCompletedItemDict() call assert_equal( 'aword', v:completed_item[ 'word' ] ) call assert_equal( 'wrd', v:completed_item[ 'abbr' ] ) call assert_equal( 'extra text', v:completed_item[ 'menu' ] ) *************** *** 170,176 **** call assert_equal( 'test', v:completed_item[ 'user_data' ] ) let s:called_completedone = 1 ! endfunction function Test_CompleteDoneDict() au CompleteDone * :call CompleteDone_CheckCompletedItemDict() --- 170,176 ---- call assert_equal( 'test', v:completed_item[ 'user_data' ] ) let s:called_completedone = 1 ! endfunc function Test_CompleteDoneDict() au CompleteDone * :call CompleteDone_CheckCompletedItemDict() *************** *** 186,192 **** au! CompleteDone endfunc ! function! s:CompleteDone_CompleteFuncDictNoUserData( findstart, base ) if a:findstart return 0 endif --- 186,192 ---- au! CompleteDone endfunc ! func s:CompleteDone_CompleteFuncDictNoUserData( findstart, base ) if a:findstart return 0 endif *************** *** 202,210 **** \ } \ ] \ } ! endfunction ! function! s:CompleteDone_CheckCompletedItemDictNoUserData() call assert_equal( 'aword', v:completed_item[ 'word' ] ) call assert_equal( 'wrd', v:completed_item[ 'abbr' ] ) call assert_equal( 'extra text', v:completed_item[ 'menu' ] ) --- 202,210 ---- \ } \ ] \ } ! endfunc ! func s:CompleteDone_CheckCompletedItemDictNoUserData() call assert_equal( 'aword', v:completed_item[ 'word' ] ) call assert_equal( 'wrd', v:completed_item[ 'abbr' ] ) call assert_equal( 'extra text', v:completed_item[ 'menu' ] ) *************** *** 213,219 **** call assert_equal( '', v:completed_item[ 'user_data' ] ) let s:called_completedone = 1 ! endfunction function Test_CompleteDoneDictNoUserData() au CompleteDone * :call CompleteDone_CheckCompletedItemDictNoUserData() --- 213,219 ---- call assert_equal( '', v:completed_item[ 'user_data' ] ) let s:called_completedone = 1 ! endfunc function Test_CompleteDoneDictNoUserData() au CompleteDone * :call CompleteDone_CheckCompletedItemDictNoUserData() *************** *** 229,243 **** au! CompleteDone endfunc ! function! s:CompleteDone_CompleteFuncList( findstart, base ) if a:findstart return 0 endif return [ 'aword' ] ! endfunction ! function! s:CompleteDone_CheckCompletedItemList() call assert_equal( 'aword', v:completed_item[ 'word' ] ) call assert_equal( '', v:completed_item[ 'abbr' ] ) call assert_equal( '', v:completed_item[ 'menu' ] ) --- 229,243 ---- au! CompleteDone endfunc ! func s:CompleteDone_CompleteFuncList( findstart, base ) if a:findstart return 0 endif return [ 'aword' ] ! endfunc ! func s:CompleteDone_CheckCompletedItemList() call assert_equal( 'aword', v:completed_item[ 'word' ] ) call assert_equal( '', v:completed_item[ 'abbr' ] ) call assert_equal( '', v:completed_item[ 'menu' ] ) *************** *** 246,252 **** call assert_equal( '', v:completed_item[ 'user_data' ] ) let s:called_completedone = 1 ! endfunction function Test_CompleteDoneList() au CompleteDone * :call CompleteDone_CheckCompletedItemList() --- 246,252 ---- call assert_equal( '', v:completed_item[ 'user_data' ] ) let s:called_completedone = 1 ! endfunc function Test_CompleteDoneList() au CompleteDone * :call CompleteDone_CheckCompletedItemList() *** ../vim-8.1.0710/src/testdir/test_lambda.vim 2018-05-22 18:31:30.001365739 +0200 --- src/testdir/test_lambda.vim 2019-01-09 22:40:53.407381391 +0100 *************** *** 1,34 **** " Test for lambda and closure ! function! Test_lambda_feature() call assert_equal(1, has('lambda')) ! endfunction ! function! Test_lambda_with_filter() let s:x = 2 call assert_equal([2, 3], filter([1, 2, 3], {i, v -> v >= s:x})) ! endfunction ! function! Test_lambda_with_map() let s:x = 1 call assert_equal([2, 3, 4], map([1, 2, 3], {i, v -> v + s:x})) ! endfunction ! function! Test_lambda_with_sort() call assert_equal([1, 2, 3, 4, 7], sort([3,7,2,1,4], {a, b -> a - b})) ! endfunction ! function! Test_lambda_with_timer() if !has('timers') return endif let s:n = 0 let s:timer_id = 0 ! function! s:Foo() "let n = 0 let s:timer_id = timer_start(50, {-> execute("let s:n += 1 | echo s:n", "")}, {"repeat": -1}) ! endfunction call s:Foo() sleep 200ms --- 1,34 ---- " Test for lambda and closure ! func Test_lambda_feature() call assert_equal(1, has('lambda')) ! endfunc ! func Test_lambda_with_filter() let s:x = 2 call assert_equal([2, 3], filter([1, 2, 3], {i, v -> v >= s:x})) ! endfunc ! func Test_lambda_with_map() let s:x = 1 call assert_equal([2, 3, 4], map([1, 2, 3], {i, v -> v + s:x})) ! endfunc ! func Test_lambda_with_sort() call assert_equal([1, 2, 3, 4, 7], sort([3,7,2,1,4], {a, b -> a - b})) ! endfunc ! func Test_lambda_with_timer() if !has('timers') return endif let s:n = 0 let s:timer_id = 0 ! func! s:Foo() "let n = 0 let s:timer_id = timer_start(50, {-> execute("let s:n += 1 | echo s:n", "")}, {"repeat": -1}) ! endfunc call s:Foo() sleep 200ms *************** *** 40,51 **** call assert_true(m > 1) call assert_true(s:n > m + 1) call assert_true(s:n < 9) ! endfunction ! function! Test_lambda_with_partial() let l:Cb = function({... -> ['zero', a:1, a:2, a:3]}, ['one', 'two']) call assert_equal(['zero', 'one', 'two', 'three'], l:Cb('three')) ! endfunction function Test_lambda_fails() call assert_equal(3, {a, b -> a + b}(1, 2)) --- 40,51 ---- call assert_true(m > 1) call assert_true(s:n > m + 1) call assert_true(s:n < 9) ! endfunc ! func Test_lambda_with_partial() let l:Cb = function({... -> ['zero', a:1, a:2, a:3]}, ['one', 'two']) call assert_equal(['zero', 'one', 'two', 'three'], l:Cb('three')) ! endfunc function Test_lambda_fails() call assert_equal(3, {a, b -> a + b}(1, 2)) *************** *** 58,116 **** call assert_equal('foo', x['>']) endfunc ! function! Test_lambda_capture_by_reference() let v = 1 let l:F = {x -> x + v} let v = 2 call assert_equal(12, l:F(10)) ! endfunction ! function! Test_lambda_side_effect() ! function! s:update_and_return(arr) let a:arr[1] = 5 return a:arr ! endfunction ! function! s:foo(arr) return {-> s:update_and_return(a:arr)} ! endfunction let arr = [3,2,1] call assert_equal([3, 5, 1], s:foo(arr)()) ! endfunction ! function! Test_lambda_refer_local_variable_from_other_scope() ! function! s:foo(X) return a:X() " refer l:x in s:bar() ! endfunction ! function! s:bar() let x = 123 return s:foo({-> x}) ! endfunction call assert_equal(123, s:bar()) ! endfunction ! function! Test_lambda_do_not_share_local_variable() ! function! s:define_funcs() let l:One = {-> split(execute("let a = 'abc' | echo a"))[0]} let l:Two = {-> exists("a") ? a : "no"} return [l:One, l:Two] ! endfunction let l:F = s:define_funcs() call assert_equal('no', l:F[1]()) call assert_equal('abc', l:F[0]()) call assert_equal('no', l:F[1]()) ! endfunction ! function! Test_lambda_closure_counter() ! function! s:foo() let x = 0 return {-> [execute("let x += 1"), x][-1]} ! endfunction let l:F = s:foo() call test_garbagecollect_now() --- 58,116 ---- call assert_equal('foo', x['>']) endfunc ! func Test_lambda_capture_by_reference() let v = 1 let l:F = {x -> x + v} let v = 2 call assert_equal(12, l:F(10)) ! endfunc ! func Test_lambda_side_effect() ! func! s:update_and_return(arr) let a:arr[1] = 5 return a:arr ! endfunc ! func! s:foo(arr) return {-> s:update_and_return(a:arr)} ! endfunc let arr = [3,2,1] call assert_equal([3, 5, 1], s:foo(arr)()) ! endfunc ! func Test_lambda_refer_local_variable_from_other_scope() ! func! s:foo(X) return a:X() " refer l:x in s:bar() ! endfunc ! func! s:bar() let x = 123 return s:foo({-> x}) ! endfunc call assert_equal(123, s:bar()) ! endfunc ! func Test_lambda_do_not_share_local_variable() ! func! s:define_funcs() let l:One = {-> split(execute("let a = 'abc' | echo a"))[0]} let l:Two = {-> exists("a") ? a : "no"} return [l:One, l:Two] ! endfunc let l:F = s:define_funcs() call assert_equal('no', l:F[1]()) call assert_equal('abc', l:F[0]()) call assert_equal('no', l:F[1]()) ! endfunc ! func Test_lambda_closure_counter() ! func! s:foo() let x = 0 return {-> [execute("let x += 1"), x][-1]} ! endfunc let l:F = s:foo() call test_garbagecollect_now() *************** *** 118,169 **** call assert_equal(2, l:F()) call assert_equal(3, l:F()) call assert_equal(4, l:F()) ! endfunction ! function! Test_lambda_with_a_var() ! function! s:foo() let x = 2 return {... -> a:000 + [x]} ! endfunction ! function! s:bar() return s:foo()(1) ! endfunction call assert_equal([1, 2], s:bar()) ! endfunction ! function! Test_lambda_call_lambda_from_lambda() ! function! s:foo(x) let l:F1 = {-> {-> a:x}} return {-> l:F1()} ! endfunction let l:F = s:foo(1) call assert_equal(1, l:F()()) ! endfunction ! function! Test_lambda_delfunc() ! function! s:gen() let pl = l: let l:Foo = {-> get(pl, "Foo", get(pl, "Bar", {-> 0}))} let l:Bar = l:Foo delfunction l:Foo return l:Bar ! endfunction let l:F = s:gen() call assert_fails(':call l:F()', 'E933:') ! endfunction ! function! Test_lambda_scope() ! function! s:NewCounter() let c = 0 return {-> [execute('let c += 1'), c][-1]} ! endfunction ! function! s:NewCounter2() return {-> [execute('let c += 100'), c][-1]} ! endfunction let l:C = s:NewCounter() let l:D = s:NewCounter2() --- 118,169 ---- call assert_equal(2, l:F()) call assert_equal(3, l:F()) call assert_equal(4, l:F()) ! endfunc ! func Test_lambda_with_a_var() ! func! s:foo() let x = 2 return {... -> a:000 + [x]} ! endfunc ! func! s:bar() return s:foo()(1) ! endfunc call assert_equal([1, 2], s:bar()) ! endfunc ! func Test_lambda_call_lambda_from_lambda() ! func! s:foo(x) let l:F1 = {-> {-> a:x}} return {-> l:F1()} ! endfunc let l:F = s:foo(1) call assert_equal(1, l:F()()) ! endfunc ! func Test_lambda_delfunc() ! func! s:gen() let pl = l: let l:Foo = {-> get(pl, "Foo", get(pl, "Bar", {-> 0}))} let l:Bar = l:Foo delfunction l:Foo return l:Bar ! endfunc let l:F = s:gen() call assert_fails(':call l:F()', 'E933:') ! endfunc ! func Test_lambda_scope() ! func! s:NewCounter() let c = 0 return {-> [execute('let c += 1'), c][-1]} ! endfunc ! func! s:NewCounter2() return {-> [execute('let c += 100'), c][-1]} ! endfunc let l:C = s:NewCounter() let l:D = s:NewCounter2() *************** *** 171,207 **** call assert_equal(1, l:C()) call assert_fails(':call l:D()', 'E15:') " E121: then E15: call assert_equal(2, l:C()) ! endfunction ! function! Test_lambda_share_scope() ! function! s:New() let c = 0 let l:Inc0 = {-> [execute('let c += 1'), c][-1]} let l:Dec0 = {-> [execute('let c -= 1'), c][-1]} return [l:Inc0, l:Dec0] ! endfunction let [l:Inc, l:Dec] = s:New() call assert_equal(1, l:Inc()) call assert_equal(2, l:Inc()) call assert_equal(1, l:Dec()) ! endfunction ! function! Test_lambda_circular_reference() ! function! s:Foo() let d = {} let d.f = {-> d} return d.f ! endfunction call s:Foo() call test_garbagecollect_now() let i = 0 | while i < 10000 | call s:Foo() | let i+= 1 | endwhile call test_garbagecollect_now() ! endfunction ! function! Test_lambda_combination() call assert_equal(2, {x -> {x -> x}}(1)(2)) call assert_equal(10, {y -> {x -> x(y)(10)}({y -> y})}({z -> z})) call assert_equal(5.0, {x -> {y -> x / y}}(10)(2.0)) --- 171,207 ---- call assert_equal(1, l:C()) call assert_fails(':call l:D()', 'E15:') " E121: then E15: call assert_equal(2, l:C()) ! endfunc ! func Test_lambda_share_scope() ! func! s:New() let c = 0 let l:Inc0 = {-> [execute('let c += 1'), c][-1]} let l:Dec0 = {-> [execute('let c -= 1'), c][-1]} return [l:Inc0, l:Dec0] ! endfunc let [l:Inc, l:Dec] = s:New() call assert_equal(1, l:Inc()) call assert_equal(2, l:Inc()) call assert_equal(1, l:Dec()) ! endfunc ! func Test_lambda_circular_reference() ! func! s:Foo() let d = {} let d.f = {-> d} return d.f ! endfunc call s:Foo() call test_garbagecollect_now() let i = 0 | while i < 10000 | call s:Foo() | let i+= 1 | endwhile call test_garbagecollect_now() ! endfunc ! func Test_lambda_combination() call assert_equal(2, {x -> {x -> x}}(1)(2)) call assert_equal(10, {y -> {x -> x(y)(10)}({y -> y})}({z -> z})) call assert_equal(5.0, {x -> {y -> x / y}}(10)(2.0)) *************** *** 214,230 **** let Z = {f -> {x -> f({y -> x(x)(y)})}({x -> f({y -> x(x)(y)})})} let Fact = {f -> {x -> x == 0 ? 1 : x * f(x - 1)}} call assert_equal(120, Z(Fact)(5)) ! endfunction ! function! Test_closure_counter() ! function! s:foo() let x = 0 ! function! s:bar() closure let x += 1 return x ! endfunction return function('s:bar') ! endfunction let l:F = s:foo() call test_garbagecollect_now() --- 214,230 ---- let Z = {f -> {x -> f({y -> x(x)(y)})}({x -> f({y -> x(x)(y)})})} let Fact = {f -> {x -> x == 0 ? 1 : x * f(x - 1)}} call assert_equal(120, Z(Fact)(5)) ! endfunc ! func Test_closure_counter() ! func! s:foo() let x = 0 ! func! s:bar() closure let x += 1 return x ! endfunc return function('s:bar') ! endfunc let l:F = s:foo() call test_garbagecollect_now() *************** *** 232,261 **** call assert_equal(2, l:F()) call assert_equal(3, l:F()) call assert_equal(4, l:F()) ! endfunction ! function! Test_closure_unlet() ! function! s:foo() let x = 1 ! function! s:bar() closure unlet x ! endfunction call s:bar() return l: ! endfunction call assert_false(has_key(s:foo(), 'x')) call test_garbagecollect_now() ! endfunction ! function! LambdaFoo() let x = 0 ! function! LambdaBar() closure let x += 1 return x ! endfunction return function('LambdaBar') ! endfunction func Test_closure_refcount() let g:Count = LambdaFoo() --- 232,261 ---- call assert_equal(2, l:F()) call assert_equal(3, l:F()) call assert_equal(4, l:F()) ! endfunc ! func Test_closure_unlet() ! func! s:foo() let x = 1 ! func! s:bar() closure unlet x ! endfunc call s:bar() return l: ! endfunc call assert_false(has_key(s:foo(), 'x')) call test_garbagecollect_now() ! endfunc ! func LambdaFoo() let x = 0 ! func! LambdaBar() closure let x += 1 return x ! endfunc return function('LambdaBar') ! endfunc func Test_closure_refcount() let g:Count = LambdaFoo() *** ../vim-8.1.0710/src/testdir/test_listdict.vim 2018-09-30 17:16:22.199142095 +0200 --- src/testdir/test_listdict.vim 2019-01-09 22:55:10.776013666 +0100 *************** *** 499,517 **** endfunc " No remove() of write-protected scope-level variable ! func! Tfunc(this_is_a_long_parameter_name) call assert_fails("call remove(a:, 'this_is_a_long_parameter_name')", 'E795') ! endfun func Test_dict_scope_var_remove() ! call Tfunc('testval') endfunc " No extend() of write-protected scope-level variable ! func! Tfunc(this_is_a_long_parameter_name) call assert_fails("call extend(a:, {'this_is_a_long_parameter_name': 1234})", 'E742') endfunc func Test_dict_scope_var_extend() ! call Tfunc('testval') endfunc " No :unlet of variable in locked scope --- 499,517 ---- endfunc " No remove() of write-protected scope-level variable ! func Tfunc1(this_is_a_long_parameter_name) call assert_fails("call remove(a:, 'this_is_a_long_parameter_name')", 'E795') ! endfunc func Test_dict_scope_var_remove() ! call Tfunc1('testval') endfunc " No extend() of write-protected scope-level variable ! func Tfunc2(this_is_a_long_parameter_name) call assert_fails("call extend(a:, {'this_is_a_long_parameter_name': 1234})", 'E742') endfunc func Test_dict_scope_var_extend() ! call Tfunc2('testval') endfunc " No :unlet of variable in locked scope *** ../vim-8.1.0710/src/testdir/test_listlbr.vim 2017-03-01 17:12:54.000000000 +0100 --- src/testdir/test_listlbr.vim 2019-01-09 22:41:37.282979294 +0100 *************** *** 13,21 **** return ScreenLines(a:lnum, a:width) endfunction ! function! s:compare_lines(expect, actual) call assert_equal(join(a:expect, "\n"), join(a:actual, "\n")) ! endfunction function s:test_windows(...) call NewWindow(10, 20) --- 13,21 ---- return ScreenLines(a:lnum, a:width) endfunction ! func s:compare_lines(expect, actual) call assert_equal(join(a:expect, "\n"), join(a:actual, "\n")) ! endfunc function s:test_windows(...) call NewWindow(10, 20) *** ../vim-8.1.0710/src/testdir/test_listlbr_utf8.vim 2017-06-25 17:52:58.000000000 +0200 --- src/testdir/test_listlbr_utf8.vim 2019-01-09 22:42:04.510731883 +0100 *************** *** 9,23 **** source view_util.vim ! function s:screen_lines(lnum, width) abort return ScreenLines(a:lnum, a:width) ! endfunction ! function! s:compare_lines(expect, actual) call assert_equal(a:expect, a:actual) ! endfunction ! function s:screen_attr(lnum, chars, ...) abort let line = getline(a:lnum) let attr = [] let prefix = get(a:000, 0, 0) --- 9,23 ---- source view_util.vim ! func s:screen_lines(lnum, width) abort return ScreenLines(a:lnum, a:width) ! endfunc ! func s:compare_lines(expect, actual) call assert_equal(a:expect, a:actual) ! endfunc ! func s:screen_attr(lnum, chars, ...) abort let line = getline(a:lnum) let attr = [] let prefix = get(a:000, 0, 0) *************** *** 26,43 **** let attr += [screenattr(a:lnum, scol + prefix)] endfor return attr ! endfunction ! function s:test_windows(...) call NewWindow(10, 20) setl ts=4 sw=4 sts=4 linebreak sbr=+ wrap exe get(a:000, 0, '') ! endfunction ! function s:close_windows(...) call CloseWindow() exe get(a:000, 0, '') ! endfunction func Test_linebreak_with_fancy_listchars() call s:test_windows("setl list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6") --- 26,43 ---- let attr += [screenattr(a:lnum, scol + prefix)] endfor return attr ! endfunc ! func s:test_windows(...) call NewWindow(10, 20) setl ts=4 sw=4 sts=4 linebreak sbr=+ wrap exe get(a:000, 0, '') ! endfunc ! func s:close_windows(...) call CloseWindow() exe get(a:000, 0, '') ! endfunc func Test_linebreak_with_fancy_listchars() call s:test_windows("setl list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6") *** ../vim-8.1.0710/src/testdir/test_marks.vim 2018-07-10 15:22:28.710142328 +0200 --- src/testdir/test_marks.vim 2019-01-09 22:42:25.030546439 +0100 *************** *** 1,6 **** " Test that a deleted mark is restored after delete-undo-redo-undo. ! function! Test_Restore_DelMark() enew! call append(0, [" textline A", " textline B", " textline C"]) normal! 2gg --- 1,6 ---- " Test that a deleted mark is restored after delete-undo-redo-undo. ! func Test_Restore_DelMark() enew! call append(0, [" textline A", " textline B", " textline C"]) normal! 2gg *************** *** 11,20 **** call assert_equal(2, pos[1]) call assert_equal(1, pos[2]) enew! ! endfunction " Test that CTRL-A and CTRL-X updates last changed mark '[, ']. ! function! Test_Incr_Marks() enew! call append(0, ["123 123 123", "123 123 123", "123 123 123"]) normal! gg --- 11,20 ---- call assert_equal(2, pos[1]) call assert_equal(1, pos[2]) enew! ! endfunc " Test that CTRL-A and CTRL-X updates last changed mark '[, ']. ! func Test_Incr_Marks() enew! call append(0, ["123 123 123", "123 123 123", "123 123 123"]) normal! gg *************** *** 23,29 **** call assert_equal("123 XXXXXXX", getline(2)) call assert_equal("XXX 123 123", getline(3)) enew! ! endfunction func Test_setpos() new one --- 23,29 ---- call assert_equal("123 XXXXXXX", getline(2)) call assert_equal("XXX 123 123", getline(3)) enew! ! endfunc func Test_setpos() new one *** ../vim-8.1.0710/src/testdir/test_matchadd_conceal.vim 2018-02-27 20:11:53.000000000 +0100 --- src/testdir/test_matchadd_conceal.vim 2019-01-09 22:43:19.454058524 +0100 *************** *** 9,15 **** source shared.vim ! function! Test_simple_matchadd() new 1put='# This is a Test' --- 9,15 ---- source shared.vim ! func Test_simple_matchadd() new 1put='# This is a Test' *************** *** 29,37 **** call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16)) quit! ! endfunction ! function! Test_simple_matchadd_and_conceal() new setlocal concealcursor=n conceallevel=1 --- 29,37 ---- call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16)) quit! ! endfunc ! func Test_simple_matchadd_and_conceal() new setlocal concealcursor=n conceallevel=1 *************** *** 51,59 **** call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16)) quit! ! endfunction ! function! Test_matchadd_and_conceallevel_3() new setlocal conceallevel=3 --- 51,59 ---- call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16)) quit! ! endfunc ! func Test_matchadd_and_conceallevel_3() new setlocal conceallevel=3 *************** *** 92,100 **** syntax off quit! ! endfunction ! function! Test_default_conceal_char() new setlocal concealcursor=n conceallevel=1 --- 92,100 ---- syntax off quit! ! endfunc ! func Test_default_conceal_char() new setlocal concealcursor=n conceallevel=1 *************** *** 128,136 **** let &listchars = listchars_save quit! ! endfunction ! function! Test_syn_and_match_conceal() new setlocal concealcursor=n conceallevel=1 --- 128,136 ---- let &listchars = listchars_save quit! ! endfunc ! func Test_syn_and_match_conceal() new setlocal concealcursor=n conceallevel=1 *************** *** 164,172 **** syntax off quit! ! endfunction ! function! Test_clearmatches() new setlocal concealcursor=n conceallevel=1 --- 164,172 ---- syntax off quit! ! endfunc ! func Test_clearmatches() new setlocal concealcursor=n conceallevel=1 *************** *** 203,211 **** call assert_equal({'group': 'Conceal', 'pattern': '\%2l ', 'priority': 10, 'id': a[0].id, 'conceal': 'Z'}, a[0]) quit! ! endfunction ! function! Test_using_matchaddpos() new setlocal concealcursor=n conceallevel=1 " set filetype and :syntax on to change screenattr() --- 203,211 ---- call assert_equal({'group': 'Conceal', 'pattern': '\%2l ', 'priority': 10, 'id': a[0].id, 'conceal': 'Z'}, a[0]) quit! ! endfunc ! func Test_using_matchaddpos() new setlocal concealcursor=n conceallevel=1 " set filetype and :syntax on to change screenattr() *************** *** 234,242 **** syntax off quit! ! endfunction ! function! Test_matchadd_repeat_conceal_with_syntax_off() new " To test targets in the same line string is replaced with conceal char --- 234,242 ---- syntax off quit! ! endfunc ! func Test_matchadd_repeat_conceal_with_syntax_off() new " To test targets in the same line string is replaced with conceal char *************** *** 253,261 **** call assert_equal('t_tt', Screenline(2)) quit! ! endfunction ! function! Test_matchadd_and_syn_conceal() new let cnt='Inductive bool : Type := | true : bool | false : bool.' let expect = 'Inductive - : Type := | true : - | false : -.' --- 253,261 ---- call assert_equal('t_tt', Screenline(2)) quit! ! endfunc ! func Test_matchadd_and_syn_conceal() new let cnt='Inductive bool : Type := | true : bool | false : bool.' let expect = 'Inductive - : Type := | true : - | false : -.' *************** *** 276,279 **** call assert_notequal(screenattr(1, 10) , screenattr(1, 11)) call assert_notequal(screenattr(1, 11) , screenattr(1, 12)) call assert_equal(screenattr(1, 11) , screenattr(1, 32)) ! endfunction --- 276,279 ---- call assert_notequal(screenattr(1, 10) , screenattr(1, 11)) call assert_notequal(screenattr(1, 11) , screenattr(1, 12)) call assert_equal(screenattr(1, 11) , screenattr(1, 32)) ! endfunc *** ../vim-8.1.0710/src/testdir/test_matchadd_conceal_utf8.vim 2016-07-21 20:10:48.000000000 +0200 --- src/testdir/test_matchadd_conceal_utf8.vim 2019-01-09 22:43:42.721851560 +0100 *************** *** 7,25 **** set term=ansi endif ! function! s:screenline(lnum) abort let line = [] for c in range(1, winwidth(0)) call add(line, nr2char(screenchar(a:lnum, c))) endfor return s:trim(join(line, '')) ! endfunction ! function! s:trim(str) abort return matchstr(a:str,'^\s*\zs.\{-}\ze\s*$') ! endfunction ! function! Test_match_using_multibyte_conceal_char() new setlocal concealcursor=n conceallevel=1 --- 7,25 ---- set term=ansi endif ! func s:screenline(lnum) abort let line = [] for c in range(1, winwidth(0)) call add(line, nr2char(screenchar(a:lnum, c))) endfor return s:trim(join(line, '')) ! endfunc ! func s:trim(str) abort return matchstr(a:str,'^\s*\zs.\{-}\ze\s*$') ! endfunc ! func Test_match_using_multibyte_conceal_char() new setlocal concealcursor=n conceallevel=1 *************** *** 40,43 **** call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16)) quit! ! endfunction --- 40,43 ---- call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16)) quit! ! endfunc *** ../vim-8.1.0710/src/testdir/test_messages.vim 2018-12-22 13:27:59.119503967 +0100 --- src/testdir/test_messages.vim 2019-01-09 22:44:04.793656085 +0100 *************** *** 43,49 **** " indicator (e.g., "-- INSERT --") when ":stopinsert" is invoked. Message " output could then be disturbed when 'cmdheight' was greater than one. " This test ensures that the bugfix for this issue remains in place. ! function! Test_stopinsert_does_not_break_message_output() set cmdheight=2 redraw! --- 43,49 ---- " indicator (e.g., "-- INSERT --") when ":stopinsert" is invoked. Message " output could then be disturbed when 'cmdheight' was greater than one. " This test ensures that the bugfix for this issue remains in place. ! func Test_stopinsert_does_not_break_message_output() set cmdheight=2 redraw! *************** *** 58,64 **** redraw! set cmdheight& ! endfunction func Test_message_completion() call feedkeys(":message \\\"\", 'tx') --- 58,64 ---- redraw! set cmdheight& ! endfunc func Test_message_completion() call feedkeys(":message \\\"\", 'tx') *** ../vim-8.1.0710/src/testdir/test_number.vim 2017-02-23 18:23:28.000000000 +0100 --- src/testdir/test_number.vim 2019-01-09 22:44:44.669304914 +0100 *************** *** 2,24 **** source view_util.vim ! func! s:screen_lines(start, end) abort return ScreenLines([a:start, a:end], 8) endfunc ! func! s:compare_lines(expect, actual) call assert_equal(a:expect, a:actual) endfunc ! func! s:test_windows(h, w) abort call NewWindow(a:h, a:w) endfunc ! func! s:close_windows() abort call CloseWindow() endfunc ! func! s:validate_cursor() abort " update skipcol. " wincol(): " f_wincol --- 2,24 ---- source view_util.vim ! func s:screen_lines(start, end) abort return ScreenLines([a:start, a:end], 8) endfunc ! func s:compare_lines(expect, actual) call assert_equal(a:expect, a:actual) endfunc ! func s:test_windows(h, w) abort call NewWindow(a:h, a:w) endfunc ! func s:close_windows() abort call CloseWindow() endfunc ! func s:validate_cursor() abort " update skipcol. " wincol(): " f_wincol *** ../vim-8.1.0710/src/testdir/test_options.vim 2018-10-02 15:06:36.761478333 +0200 --- src/testdir/test_options.vim 2019-01-09 22:45:10.113082099 +0100 *************** *** 1,6 **** " Test for options ! function! Test_whichwrap() set whichwrap=b,s call assert_equal('b,s', &whichwrap) --- 1,6 ---- " Test for options ! func Test_whichwrap() set whichwrap=b,s call assert_equal('b,s', &whichwrap) *************** *** 20,35 **** call assert_equal('h', &whichwrap) set whichwrap& ! endfunction ! function! Test_isfname() " This used to cause Vim to access uninitialized memory. set isfname= call assert_equal("~X", expand("~X")) set isfname& ! endfunction ! function Test_wildchar() " Empty 'wildchar' used to access invalid memory. call assert_fails('set wildchar=', 'E521:') call assert_fails('set wildchar=abc', 'E521:') --- 20,35 ---- call assert_equal('h', &whichwrap) set whichwrap& ! endfunc ! func Test_isfname() " This used to cause Vim to access uninitialized memory. set isfname= call assert_equal("~X", expand("~X")) set isfname& ! endfunc ! func Test_wildchar() " Empty 'wildchar' used to access invalid memory. call assert_fails('set wildchar=', 'E521:') call assert_fails('set wildchar=abc', 'E521:') *************** *** 40,48 **** let a=execute('set wildchar?') call assert_equal("\n wildchar=", a) set wildchar& ! endfunction ! function Test_options() let caught = 'ok' try options --- 40,48 ---- let a=execute('set wildchar?') call assert_equal("\n wildchar=", a) set wildchar& ! endfunc ! func Test_options() let caught = 'ok' try options *************** *** 53,61 **** " close option-window close ! endfunction ! function Test_path_keep_commas() " Test that changing 'path' keeps two commas. set path=foo,,bar set path-=bar --- 53,61 ---- " close option-window close ! endfunc ! func Test_path_keep_commas() " Test that changing 'path' keeps two commas. set path=foo,,bar set path-=bar *************** *** 63,69 **** call assert_equal('foo,,bar', &path) set path& ! endfunction func Test_signcolumn() if has('signs') --- 63,69 ---- call assert_equal('foo,,bar', &path) set path& ! endfunc func Test_signcolumn() if has('signs') *** ../vim-8.1.0710/src/testdir/test_partial.vim 2016-08-11 22:46:37.000000000 +0200 --- src/testdir/test_partial.vim 2019-01-09 22:45:36.684850393 +0100 *************** *** 114,122 **** call OuterCall() endfunc ! function! s:cache_clear() dict return self.name ! endfunction func Test_script_function_in_dict() let s:obj = {'name': 'foo'} --- 114,122 ---- call OuterCall() endfunc ! func s:cache_clear() dict return self.name ! endfunc func Test_script_function_in_dict() let s:obj = {'name': 'foo'} *************** *** 136,145 **** call assert_equal('bar', B()) endfunc ! function! s:cache_arg(arg) dict let s:result = self.name . '/' . a:arg return s:result ! endfunction func Test_script_function_in_dict_arg() let s:obj = {'name': 'foo'} --- 136,145 ---- call assert_equal('bar', B()) endfunc ! func s:cache_arg(arg) dict let s:result = self.name . '/' . a:arg return s:result ! endfunc func Test_script_function_in_dict_arg() let s:obj = {'name': 'foo'} *** ../vim-8.1.0710/src/testdir/test_smartindent.vim 2017-08-03 17:53:54.000000000 +0200 --- src/testdir/test_smartindent.vim 2019-01-09 22:46:34.496349516 +0100 *************** *** 1,24 **** " Tests for smartindent " Tests for not doing smart indenting when it isn't set. ! function! Test_nosmartindent() new call append(0, [" some test text", ! \ " test text", ! \ "test text", ! \ " test text"]) set nocindent nosmartindent autoindent exe "normal! gg/some\" exe "normal! 2cc#test\" call assert_equal(" #test", getline(1)) enew! | close ! endfunction ! function MyIndent() ! endfunction " When 'indentexpr' is set, setting 'si' has no effect. ! function Test_smartindent_has_no_effect() new exe "normal! i\one\" set noautoindent --- 1,24 ---- " Tests for smartindent " Tests for not doing smart indenting when it isn't set. ! func Test_nosmartindent() new call append(0, [" some test text", ! \ " test text", ! \ "test text", ! \ " test text"]) set nocindent nosmartindent autoindent exe "normal! gg/some\" exe "normal! 2cc#test\" call assert_equal(" #test", getline(1)) enew! | close ! endfunc ! func MyIndent() ! endfunc " When 'indentexpr' is set, setting 'si' has no effect. ! func Test_smartindent_has_no_effect() new exe "normal! i\one\" set noautoindent *************** *** 36,41 **** set smartindent& set indentexpr& bwipe! ! endfunction " vim: shiftwidth=2 sts=2 expandtab --- 36,41 ---- set smartindent& set indentexpr& bwipe! ! endfunc " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.1.0710/src/testdir/test_substitute.vim 2017-10-26 19:57:28.000000000 +0200 --- src/testdir/test_substitute.vim 2019-01-09 22:47:00.292127354 +0100 *************** *** 1,6 **** " Tests for multi-line regexps with ":s". ! function! Test_multiline_subst() enew! call append(0, ["1 aa", \ "bb", --- 1,6 ---- " Tests for multi-line regexps with ":s". ! func Test_multiline_subst() enew! call append(0, ["1 aa", \ "bb", *************** *** 38,46 **** call assert_equal('7x7f', getline(12)) call assert_equal('xxxxx', getline(13)) enew! ! endfunction ! function! Test_substitute_variants() " Validate that all the 2-/3-letter variants which embed the flags into the " command name actually work. enew! --- 38,46 ---- call assert_equal('7x7f', getline(12)) call assert_equal('xxxxx', getline(13)) enew! ! endfunc ! func Test_substitute_variants() " Validate that all the 2-/3-letter variants which embed the flags into the " command name actually work. enew! *************** *** 105,111 **** call assert_equal(var.exp, getline('.'), msg) endfor endfor ! endfunction func Test_substitute_repeat() " This caused an invalid memory access. --- 105,111 ---- call assert_equal(var.exp, getline('.'), msg) endfor endfor ! endfunc func Test_substitute_repeat() " This caused an invalid memory access. *************** *** 401,409 **** " List entry format: [input, cmd, output] let tests = [ ['aAa', "s/A/\\=substitute(submatch(0), '.', '\\', '')/", ! \ ['a\a']], \ ['bBb', "s/B/\\=substitute(submatch(0), '.', '\\', '')/", ! \ ['b\b']], \ ['cCc', "s/C/\\=substitute(submatch(0), '.', '\\', '')/", \ ["c\", 'c']], \ ['dDd', "s/D/\\=substitute(submatch(0), '.', '\\\\', '')/", --- 401,409 ---- " List entry format: [input, cmd, output] let tests = [ ['aAa', "s/A/\\=substitute(submatch(0), '.', '\\', '')/", ! \ ['a\a']], \ ['bBb', "s/B/\\=substitute(submatch(0), '.', '\\', '')/", ! \ ['b\b']], \ ['cCc', "s/C/\\=substitute(submatch(0), '.', '\\', '')/", \ ["c\", 'c']], \ ['dDd', "s/D/\\=substitute(submatch(0), '.', '\\\\', '')/", *** ../vim-8.1.0710/src/testdir/test_system.vim 2017-12-20 22:05:10.000000000 +0100 --- src/testdir/test_system.vim 2019-01-09 22:47:27.771891532 +0100 *************** *** 1,6 **** " Tests for system() and systemlist() ! function! Test_System() if !executable('echo') || !executable('cat') || !executable('wc') return endif --- 1,6 ---- " Tests for system() and systemlist() ! func Test_System() if !executable('echo') || !executable('cat') || !executable('wc') return endif *************** *** 45,53 **** bwipe! call assert_fails('call system("wc -l", 99999)', 'E86:') ! endfunction ! function! Test_system_exmode() if has('unix') " echo $? only works on Unix let cmd = ' -es -u NONE -c "source Xscript" +q; echo "result=$?"' " Need to put this in a script, "catch" isn't found after an unknown --- 45,53 ---- bwipe! call assert_fails('call system("wc -l", 99999)', 'E86:') ! endfunc ! func Test_system_exmode() if has('unix') " echo $? only works on Unix let cmd = ' -es -u NONE -c "source Xscript" +q; echo "result=$?"' " Need to put this in a script, "catch" isn't found after an unknown *** ../vim-8.1.0710/src/testdir/test_terminal.vim 2018-12-24 19:15:15.551304134 +0100 --- src/testdir/test_terminal.vim 2019-01-09 22:47:35.611824406 +0100 *************** *** 122,128 **** unlet g:job endfunc ! func! s:Nasty_exit_cb(job, st) exe g:buf . 'bwipe!' let g:buf = 0 endfunc --- 122,128 ---- unlet g:job endfunc ! func s:Nasty_exit_cb(job, st) exe g:buf . 'bwipe!' let g:buf = 0 endfunc *************** *** 1727,1729 **** --- 1727,1753 ---- let term = term_start('false', {'term_finish': 'close'}) call WaitForAssert({-> assert_equal(v:null, term_getjob(term)) }) endfunc + + func Test_term_gettitle() + if !has('title') || empty(&t_ts) + return + endif + " TODO: this fails on Travis + return + + " term_gettitle() returns an empty string for a non-terminal buffer + " or for a non-existing buffer. + call assert_equal('', term_gettitle(bufnr('%'))) + call assert_equal('', term_gettitle(bufnr('$') + 1)) + + let term = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile']) + call WaitForAssert({-> assert_equal('[No Name] - VIM', term_gettitle(term)) }) + + call term_sendkeys(term, ":e Xfoo\r") + call WaitForAssert({-> assert_match('Xfoo (.*[/\\]testdir) - VIM', term_gettitle(term)) }) + + call term_sendkeys(term, ":set titlestring=foo\r") + call WaitForAssert({-> assert_equal('foo', term_gettitle(term)) }) + + exe term . 'bwipe!' + endfunc *** ../vim-8.1.0710/src/testdir/test_textobjects.vim 2018-08-16 21:37:46.389318767 +0200 --- src/testdir/test_textobjects.vim 2019-01-09 22:47:49.067709349 +0100 *************** *** 236,242 **** %delete _ endfunc ! func! Test_sentence_with_cursor_on_delimiter() enew! call setline(1, "A '([sentence.])' A sentence.") --- 236,242 ---- %delete _ endfunc ! func Test_sentence_with_cursor_on_delimiter() enew! call setline(1, "A '([sentence.])' A sentence.") *** ../vim-8.1.0710/src/testdir/test_utf8.vim 2017-03-18 22:49:29.000000000 +0100 --- src/testdir/test_utf8.vim 2019-01-09 22:48:16.191477993 +0100 *************** *** 25,41 **** endfunc " Test for customlist completion ! function! CustomComplete1(lead, line, pos) return ['あ', 'い'] ! endfunction ! function! CustomComplete2(lead, line, pos) return ['あたし', 'あたま', 'あたりめ'] ! endfunction ! function! CustomComplete3(lead, line, pos) return ['Nこ', 'Nん', 'Nぶ'] ! endfunction func Test_customlist_completion() command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo --- 25,41 ---- endfunc " Test for customlist completion ! func CustomComplete1(lead, line, pos) return ['あ', 'い'] ! endfunc ! func CustomComplete2(lead, line, pos) return ['あたし', 'あたま', 'あたりめ'] ! endfunc ! func CustomComplete3(lead, line, pos) return ['Nこ', 'Nん', 'Nぶ'] ! endfunc func Test_customlist_completion() command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo *** ../vim-8.1.0710/src/testdir/test_utf8_comparisons.vim 2017-06-27 18:20:28.000000000 +0200 --- src/testdir/test_utf8_comparisons.vim 2019-01-09 22:48:57.287128840 +0100 *************** *** 5,16 **** finish endif ! function! Ch(a, op, b, expected) call assert_equal(eval(printf('"%s" %s "%s"', a:a, a:op, a:b)), a:expected, \ printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected)) ! endfunction ! function! Chk(a, b, result) if a:result == 0 call Ch(a:a, '==?', a:b, 1) call Ch(a:a, '!=?', a:b, 0) --- 5,16 ---- finish endif ! func Ch(a, op, b, expected) call assert_equal(eval(printf('"%s" %s "%s"', a:a, a:op, a:b)), a:expected, \ printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected)) ! endfunc ! func Chk(a, b, result) if a:result == 0 call Ch(a:a, '==?', a:b, 1) call Ch(a:a, '!=?', a:b, 0) *************** *** 33,58 **** call Ch(a:a, '?', a:b, 0) endif ! endfunction ! function! Check(a, b, result) call Chk(a:a, a:b, a:result) call Chk(a:b, a:a, -a:result) ! endfunction ! function! LT(a, b) call Check(a:a, a:b, -1) ! endfunction ! function! GT(a, b) call Check(a:a, a:b, 1) ! endfunction ! function! EQ(a, b) call Check(a:a, a:b, 0) ! endfunction ! function Test_comparisons() call EQ('', '') call LT('', 'a') call EQ('abc', 'abc') --- 33,58 ---- call Ch(a:a, '?', a:b, 0) endif ! endfunc ! func Check(a, b, result) call Chk(a:a, a:b, a:result) call Chk(a:b, a:a, -a:result) ! endfunc ! func LT(a, b) call Check(a:a, a:b, -1) ! endfunc ! func GT(a, b) call Check(a:a, a:b, 1) ! endfunc ! func EQ(a, b) call Check(a:a, a:b, 0) ! endfunc ! func Test_comparisons() call EQ('', '') call LT('', 'a') call EQ('abc', 'abc') *************** *** 85,95 **** for n in range(0xC0, 0xFF) call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) endfor ! endfunction " test that g~ap changes one paragraph only. ! function Test_gap() new call feedkeys("iabcd\n\ndefggg0g~ap", "tx") call assert_equal(["ABCD", "", "defg"], getline(1,3)) ! endfunction --- 85,95 ---- for n in range(0xC0, 0xFF) call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) endfor ! endfunc " test that g~ap changes one paragraph only. ! func Test_gap() new call feedkeys("iabcd\n\ndefggg0g~ap", "tx") call assert_equal(["ABCD", "", "defg"], getline(1,3)) ! endfunc *** ../vim-8.1.0710/src/testdir/test_vartabs.vim 2018-11-22 03:07:30.948596188 +0100 --- src/testdir/test_vartabs.vim 2019-01-09 22:49:05.211061699 +0100 *************** *** 134,140 **** bwipeout! endfunc ! func! Test_vartabs_breakindent() if !exists("+breakindent") return endif --- 134,140 ---- bwipeout! endfunc ! func Test_vartabs_breakindent() if !exists("+breakindent") return endif *** ../vim-8.1.0710/src/testdir/test_vimscript.vim 2017-09-23 18:58:18.000000000 +0200 --- src/testdir/test_vimscript.vim 2019-01-09 22:50:51.474166455 +0100 *************** *** 5,15 **** " Test environment {{{1 "------------------------------------------------------------------------------- ! com! XpathINIT let g:Xpath = '' com! -nargs=1 -bar Xpath let g:Xpath = g:Xpath . " Append a message to the "messages" file ! func! Xout(text) split messages $put =a:text wq --- 5,15 ---- " Test environment {{{1 "------------------------------------------------------------------------------- ! com! XpathINIT let g:Xpath = '' com! -nargs=1 -bar Xpath let g:Xpath = g:Xpath . " Append a message to the "messages" file ! func Xout(text) split messages $put =a:text wq *************** *** 25,31 **** " in the variable argument list. This function is useful if similar tests are " to be made for a ":return" from a function call or a ":finish" in a script " file. ! function! MakeScript(funcname, ...) let script = tempname() execute "redir! >" . script execute "function" a:funcname --- 25,31 ---- " in the variable argument list. This function is useful if similar tests are " to be made for a ":return" from a function call or a ":finish" in a script " file. ! func MakeScript(funcname, ...) let script = tempname() execute "redir! >" . script execute "function" a:funcname *************** *** 50,56 **** write bwipeout return script ! endfunction " ExecAsScript - Source a temporary script made from a function. {{{2 " --- 50,56 ---- write bwipeout return script ! endfunc " ExecAsScript - Source a temporary script made from a function. {{{2 " *************** *** 301,309 **** " let calls = "" com! -nargs=1 CALL ! \ if !exists("calls") && !exists("outer") | ! \ let g:calls = g:calls . | ! \ endif let i = 0 while i < 3 --- 301,309 ---- " let calls = "" com! -nargs=1 CALL ! \ if !exists("calls") && !exists("outer") | ! \ let g:calls = g:calls . | ! \ endif let i = 0 while i < 3 *************** *** 357,363 **** if exists("*F1") call F1("F1") if exists("*G1") ! call G1("G1") endif endif --- 357,363 ---- if exists("*F1") call F1("F1") if exists("*G1") ! call G1("G1") endif endif *************** *** 367,379 **** if exists("*F2") call F2(2, "F2") if exists("*G21") ! call G21("G21") endif if exists("*G22") ! call G22("G22") endif if exists("*G23") ! call G23("G23") endif endif --- 367,379 ---- if exists("*F2") call F2(2, "F2") if exists("*G21") ! call G21("G21") endif if exists("*G22") ! call G22("G22") endif if exists("*G23") ! call G23("G23") endif endif *************** *** 383,395 **** if exists("*F3") call F3(3, "F3") if exists("*G31") ! call G31("G31") endif if exists("*G32") ! call G32("G32") endif if exists("*G33") ! call G33("G33") endif endif --- 383,395 ---- if exists("*F3") call F3(3, "F3") if exists("*G31") ! call G31("G31") endif if exists("*G32") ! call G32("G32") endif if exists("*G33") ! call G33("G33") endif endif *************** *** 640,646 **** endif endif return match ! endfunction if 1 || strlen("\"") | Xpath 'a' Xpath 'b' --- 640,646 ---- endif endif return match ! endfunc if 1 || strlen("\"") | Xpath 'a' Xpath 'b' *************** *** 1032,1042 **** call assert_true(empty(v:none)) func ChangeYourMind() ! try ! return v:true ! finally ! return 'something else' ! endtry endfunc call ChangeYourMind() --- 1032,1042 ---- call assert_true(empty(v:none)) func ChangeYourMind() ! try ! return v:true ! finally ! return 'something else' ! endtry endfunc call ChangeYourMind() *************** *** 1250,1319 **** func Test_script_lines() " :append try ! call DefineFunction('T_Append', [ ! \ 'append', ! \ 'py < tmp.txt' sp wincmd p edit! tmp.txt ! endfunction func Test_window_prevwin() " Can we make this work on MS-Windows? --- 578,590 ---- only endfunc ! func Fun_RenewFile() sleep 2 silent execute '!echo "1" > tmp.txt' sp wincmd p edit! tmp.txt ! endfunc func Test_window_prevwin() " Can we make this work on MS-Windows? *** ../vim-8.1.0710/src/testdir/test_xxd.vim 2018-05-17 15:49:14.000000000 +0200 --- src/testdir/test_xxd.vim 2019-01-09 22:51:36.965785833 +0100 *************** *** 7,23 **** let s:xxd_cmd = $XXD endif ! func! PrepareBuffer(lines) new call append(0, a:lines) $d endfunc ! func! s:Mess(counter) return printf("Failed xxd test %d:", a:counter) endfunc ! func! Test_xxd() call PrepareBuffer(range(1,30)) set ff=unix w XXDfile --- 7,23 ---- let s:xxd_cmd = $XXD endif ! func PrepareBuffer(lines) new call append(0, a:lines) $d endfunc ! func s:Mess(counter) return printf("Failed xxd test %d:", a:counter) endfunc ! func Test_xxd() call PrepareBuffer(range(1,30)) set ff=unix w XXDfile *** ../vim-8.1.0710/src/version.c 2019-01-09 22:24:46.568161097 +0100 --- src/version.c 2019-01-09 22:58:02.562605011 +0100 *************** *** 801,802 **** --- 801,804 ---- { /* Add new patch number below this line */ + /**/ + 711, /**/ -- hundred-and-one symptoms of being an internet addict: 140. You'd rather catch a score on the web than watch the game as it is being played on tv. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///