diff options
Diffstat (limited to 'test/functional/legacy/eval_spec.lua')
| -rw-r--r-- | test/functional/legacy/eval_spec.lua | 362 | 
1 files changed, 182 insertions, 180 deletions
| diff --git a/test/functional/legacy/eval_spec.lua b/test/functional/legacy/eval_spec.lua index 3684fe714d..c5d38d6d05 100644 --- a/test/functional/legacy/eval_spec.lua +++ b/test/functional/legacy/eval_spec.lua @@ -2,8 +2,11 @@  local helpers = require('test.functional.helpers')(after_each)  local feed, insert, source = helpers.feed, helpers.insert, helpers.source -local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect +local clear, command, expect = helpers.clear, helpers.command, helpers.expect  local eq, eval, write_file = helpers.eq, helpers.eval, helpers.write_file +local wait = helpers.wait +local exc_exec = helpers.exc_exec +local dedent = helpers.dedent  describe('eval', function()    setup(function() @@ -37,17 +40,17 @@ describe('eval', function()    end)    it(':let', function() -    execute('so test_eval_setup.vim') -    execute([[let @" = 'abc']]) -    execute('AR "') -    execute([[let @" = "abc\n"]]) +    command('so test_eval_setup.vim') +    command([[let @" = 'abc']]) +    command('AR "') +    command([[let @" = "abc\n"]])      source('AR "') -    execute([[let @" = "abc\<C-m>"]]) -    execute('AR "') -    execute([[let @= = '"abc"']]) -    execute('AR =') +    command([[let @" = "abc\<C-m>"]]) +    command('AR "') +    command([[let @= = '"abc"']]) +    command('AR =')      expect([[ -       +        ": type v; value: abc (['abc']), expr: abc (['abc'])        ": type V; value: abc]].."\000 (['abc']), expr: abc\000"..[[ (['abc'])        ": type V; value: abc]].."\r\000 (['abc\r']), expr: abc\r\000 (['abc\r"..[[']) @@ -55,32 +58,33 @@ describe('eval', function()    end)    it('basic setreg() tests', function() -    execute('so test_eval_setup.vim') +    command('so test_eval_setup.vim')      insert('{{{1 Basic setreg tests') -    execute([[call SetReg('a', 'abcA', 'c')]]) -    execute([[call SetReg('b', 'abcB', 'v')]]) -    execute([[call SetReg('c', 'abcC', 'l')]]) -    execute([[call SetReg('d', 'abcD', 'V')]]) -    execute([[call SetReg('e', 'abcE', 'b')]]) -    execute([[call SetReg('f', 'abcF', "\<C-v>")]]) -    execute([[call SetReg('g', 'abcG', 'b10')]]) -    execute([[call SetReg('h', 'abcH', "\<C-v>10")]]) -    execute([[call SetReg('I', 'abcI')]]) +    command([[call SetReg('a', 'abcA', 'c')]]) +    command([[call SetReg('b', 'abcB', 'v')]]) +    command([[call SetReg('c', 'abcC', 'l')]]) +    command([[call SetReg('d', 'abcD', 'V')]]) +    command([[call SetReg('e', 'abcE', 'b')]]) +    command([[call SetReg('f', 'abcF', "\<C-v>")]]) +    command([[call SetReg('g', 'abcG', 'b10')]]) +    command([[call SetReg('h', 'abcH', "\<C-v>10")]]) +    command([[call SetReg('I', 'abcI')]])      feed('Go{{{1 Appending single lines with setreg()<esc>') -    execute([[call SetReg('A', 'abcAc', 'c')]]) -    execute([[call SetReg('A', 'abcAl', 'l')]]) -    execute([[call SetReg('A', 'abcAc2','c')]]) -    execute([[call SetReg('b', 'abcBc', 'ca')]]) -    execute([[call SetReg('b', 'abcBb', 'ba')]]) -    execute([[call SetReg('b', 'abcBc2','ca')]]) -    execute([[call SetReg('b', 'abcBb2','b50a')]]) -    execute([[call SetReg('C', 'abcCl', 'l')]]) -    execute([[call SetReg('C', 'abcCc', 'c')]]) -    execute([[call SetReg('D', 'abcDb', 'b')]]) -    execute([[call SetReg('E', 'abcEb', 'b')]]) -    execute([[call SetReg('E', 'abcEl', 'l')]]) -    execute([[call SetReg('F', 'abcFc', 'c')]]) +    wait() +    command([[call SetReg('A', 'abcAc', 'c')]]) +    command([[call SetReg('A', 'abcAl', 'l')]]) +    command([[call SetReg('A', 'abcAc2','c')]]) +    command([[call SetReg('b', 'abcBc', 'ca')]]) +    command([[call SetReg('b', 'abcBb', 'ba')]]) +    command([[call SetReg('b', 'abcBc2','ca')]]) +    command([[call SetReg('b', 'abcBb2','b50a')]]) +    command([[call SetReg('C', 'abcCl', 'l')]]) +    command([[call SetReg('C', 'abcCc', 'c')]]) +    command([[call SetReg('D', 'abcDb', 'b')]]) +    command([[call SetReg('E', 'abcEb', 'b')]]) +    command([[call SetReg('E', 'abcEl', 'l')]]) +    command([[call SetReg('F', 'abcFc', 'c')]])      expect([[        {{{1 Basic setreg tests        {{{2 setreg('a', 'abcA', 'c') @@ -191,14 +195,14 @@ describe('eval', function()    end)    it('appending NL with setreg()', function() -    execute('so test_eval_setup.vim') - -    execute([[call setreg('a', 'abcA2', 'c')]]) -    execute([[call setreg('b', 'abcB2', 'v')]]) -    execute([[call setreg('c', 'abcC2', 'l')]]) -    execute([[call setreg('d', 'abcD2', 'V')]]) -    execute([[call setreg('e', 'abcE2', 'b')]]) -    execute([[call setreg('f', 'abcF2', "\<C-v>")]]) +    command('so test_eval_setup.vim') + +    command([[call setreg('a', 'abcA2', 'c')]]) +    command([[call setreg('b', 'abcB2', 'v')]]) +    command([[call setreg('c', 'abcC2', 'l')]]) +    command([[call setreg('d', 'abcD2', 'V')]]) +    command([[call setreg('e', 'abcE2', 'b')]]) +    command([[call setreg('f', 'abcF2', "\<C-v>")]])      -- These registers where set like this in the old test_eval.in but never      -- copied to the output buffer with SetReg().  They do not appear in      -- test_eval.ok.  Therefore they are commented out. @@ -206,14 +210,14 @@ describe('eval', function()      --execute([[call setreg('h', 'abcH2', "\<C-v>10")]])      --execute([[call setreg('I', 'abcI2')]]) -    execute([[call SetReg('A', "\n")]]) -    execute([[call SetReg('B', "\n", 'c')]]) -    execute([[call SetReg('C', "\n")]]) -    execute([[call SetReg('D', "\n", 'l')]]) -    execute([[call SetReg('E', "\n")]]) -    execute([[call SetReg('F', "\n", 'b')]]) +    command([[call SetReg('A', "\n")]]) +    command([[call SetReg('B', "\n", 'c')]]) +    command([[call SetReg('C', "\n")]]) +    command([[call SetReg('D', "\n", 'l')]]) +    command([[call SetReg('E', "\n")]]) +    command([[call SetReg('F', "\n", 'b')]])      expect([[ -       +        {{{2 setreg('A', ']]..'\000'..[[')        A: type V; value: abcA2]].."\000 (['abcA2']), expr: abcA2\000"..[[ (['abcA2'])        == @@ -228,19 +232,19 @@ describe('eval', function()        C: type V; value: abcC2]].."\000\000 (['abcC2', '']), expr: abcC2\000\000"..[[ (['abcC2', ''])        ==        abcC2 -       +        ==        {{{2 setreg('D', ']]..'\000'..[[', 'l')        D: type V; value: abcD2]].."\000\000 (['abcD2', '']), expr: abcD2\000\000"..[[ (['abcD2', ''])        ==        abcD2 -       +        ==        {{{2 setreg('E', ']]..'\000'..[[')        E: type V; value: abcE2]].."\000\000 (['abcE2', '']), expr: abcE2\000\000"..[[ (['abcE2', ''])        ==        abcE2 -       +        ==        {{{2 setreg('F', ']]..'\000'..[[', 'b')        F: type ]].."\0220; value: abcF2\000 (['abcF2', '']), expr: abcF2\000"..[[ (['abcF2', '']) @@ -250,27 +254,27 @@ describe('eval', function()    end)    it('setting and appending list with setreg()', function() -    execute('so test_eval_setup.vim') - -    execute([[$put ='{{{1 Setting lists with setreg()']]) -    execute([=[call SetReg('a', ['abcA3'], 'c')]=]) -    execute([=[call SetReg('b', ['abcB3'], 'l')]=]) -    execute([=[call SetReg('c', ['abcC3'], 'b')]=]) -    execute([=[call SetReg('d', ['abcD3'])]=]) -    execute([=[call SetReg('e', [1, 2, 'abc', 3])]=]) -    execute([=[call SetReg('f', [1, 2, 3])]=]) - -    execute([[$put ='{{{1 Appending lists with setreg()']]) -    execute([=[call SetReg('A', ['abcA3c'], 'c')]=]) -    execute([=[call SetReg('b', ['abcB3l'], 'la')]=]) -    execute([=[call SetReg('C', ['abcC3b'], 'lb')]=]) -    execute([=[call SetReg('D', ['abcD32'])]=]) -    execute([=[call SetReg('A', ['abcA32'])]=]) -    execute([=[call SetReg('B', ['abcB3c'], 'c')]=]) -    execute([=[call SetReg('C', ['abcC3l'], 'l')]=]) -    execute([=[call SetReg('D', ['abcD3b'], 'b')]=]) +    command('so test_eval_setup.vim') + +    command([[$put ='{{{1 Setting lists with setreg()']]) +    command([=[call SetReg('a', ['abcA3'], 'c')]=]) +    command([=[call SetReg('b', ['abcB3'], 'l')]=]) +    command([=[call SetReg('c', ['abcC3'], 'b')]=]) +    command([=[call SetReg('d', ['abcD3'])]=]) +    command([=[call SetReg('e', [1, 2, 'abc', 3])]=]) +    command([=[call SetReg('f', [1, 2, 3])]=]) + +    command([[$put ='{{{1 Appending lists with setreg()']]) +    command([=[call SetReg('A', ['abcA3c'], 'c')]=]) +    command([=[call SetReg('b', ['abcB3l'], 'la')]=]) +    command([=[call SetReg('C', ['abcC3b'], 'lb')]=]) +    command([=[call SetReg('D', ['abcD32'])]=]) +    command([=[call SetReg('A', ['abcA32'])]=]) +    command([=[call SetReg('B', ['abcB3c'], 'c')]=]) +    command([=[call SetReg('C', ['abcC3l'], 'l')]=]) +    command([=[call SetReg('D', ['abcD3b'], 'b')]=])      expect([[ -       +        {{{1 Setting lists with setreg()        {{{2 setreg('a', ['abcA3'], 'c')        a: type v; value: abcA3 (['abcA3']), expr: abcA3 (['abcA3']) @@ -359,9 +363,9 @@ describe('eval', function()      -- the next expect() easier to write.  This is neccessary because null      -- bytes on a line by itself don't play well together with the dedent      -- function used in expect(). -    execute('%delete') -    execute([[$put ='{{{1 Appending lists with NL with setreg()']]) -    execute([=[call SetReg('A', ["\n", 'abcA3l2'], 'l')]=]) +    command('%delete') +    command([[$put ='{{{1 Appending lists with NL with setreg()']]) +    command([=[call SetReg('A', ["\n", 'abcA3l2'], 'l')]=])      expect(        '\n'..        '{{{1 Appending lists with NL with setreg()\n'.. @@ -374,8 +378,8 @@ describe('eval', function()        '\000\n'..        'abcA3l2\n'..        '==') -    execute('%delete') -    execute([=[call SetReg('B', ["\n", 'abcB3c2'], 'c')]=]) +    command('%delete') +    command([=[call SetReg('B', ["\n", 'abcB3c2'], 'c')]=])      expect(        '\n'..        "{{{2 setreg('B', ['\000', 'abcB3c2'], 'c')\n".. @@ -386,8 +390,8 @@ describe('eval', function()        'abcB3c\n'..        '\000\n'..        'abcB3c2=') -    execute('%delete') -    execute([=[call SetReg('C', ["\n", 'abcC3b2'], 'b')]=]) +    command('%delete') +    command([=[call SetReg('C', ["\n", 'abcC3b2'], 'b')]=])      expect(        '\n'..        "{{{2 setreg('C', ['\000', 'abcC3b2'], 'b')\n".. @@ -398,8 +402,8 @@ describe('eval', function()        ' abcC3l\n'..        ' \000\n'..        ' abcC3b2') -    execute('%delete') -    execute([=[call SetReg('D', ["\n", 'abcD3b50'],'b50')]=]) +    command('%delete') +    command([=[call SetReg('D', ["\n", 'abcD3b50'],'b50')]=])      expect(        '\n'..        "{{{2 setreg('D', ['\000', 'abcD3b50'], 'b50')\n".. @@ -416,8 +420,8 @@ describe('eval', function()    -- to make the expect() calls easier to write.  Otherwise the null byte can    -- make trouble on a line on its own.    it('setting lists with NLs with setreg(), part 1', function() -    execute('so test_eval_setup.vim') -    execute([=[call SetReg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2"])]=]) +    command('so test_eval_setup.vim') +    command([=[call SetReg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2"])]=])      expect(       '\n'..        "{{{2 setreg('a', ['abcA4-0', '\000', 'abcA4-2\000', '\000abcA4-3', 'abcA4-4\000abcA4-4-2'])\n".. @@ -432,8 +436,8 @@ describe('eval', function()    end)    it('setting lists with NLs with setreg(), part 2', function() -    execute('so test_eval_setup.vim') -    execute([=[call SetReg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2"], 'c')]=]) +    command('so test_eval_setup.vim') +    command([=[call SetReg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2"], 'c')]=])      expect(        '\n'..        "{{{2 setreg('b', ['abcB4c-0', '\000', 'abcB4c-2\000', '\000abcB4c-3', 'abcB4c-4\000abcB4c-4-2'], 'c')\n".. @@ -447,8 +451,8 @@ describe('eval', function()    end)    it('setting lists with NLs with setreg(), part 3', function() -    execute('so test_eval_setup.vim') -    execute([=[call SetReg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2"], 'l')]=]) +    command('so test_eval_setup.vim') +    command([=[call SetReg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2"], 'l')]=])      expect(        '\n'..        "{{{2 setreg('c', ['abcC4l-0', '\000', 'abcC4l-2\000', '\000abcC4l-3', 'abcC4l-4\000abcC4l-4-2'], 'l')\n".. @@ -462,8 +466,8 @@ describe('eval', function()        '==')    end)    it('setting lists with NLs with setreg(), part 4', function() -    execute('so test_eval_setup.vim') -    execute([=[call SetReg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\nabcD4b-4-2"], 'b')]=]) +    command('so test_eval_setup.vim') +    command([=[call SetReg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\nabcD4b-4-2"], 'b')]=])      expect(        '\n'..        "{{{2 setreg('d', ['abcD4b-0', '\000', 'abcD4b-2\000', '\000abcD4b-3', 'abcD4b-4\000abcD4b-4-2'], 'b')\n".. @@ -476,8 +480,8 @@ describe('eval', function()        ' abcD4b-4\000abcD4b-4-2')    end)    it('setting lists with NLs with setreg(), part 5', function() -    execute('so test_eval_setup.vim') -    execute([=[call SetReg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4b10-4\nabcE4b10-4-2"], 'b10')]=]) +    command('so test_eval_setup.vim') +    command([=[call SetReg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4b10-4\nabcE4b10-4-2"], 'b10')]=])      expect(        '\n'..        "{{{2 setreg('e', ['abcE4b10-0', '\000', 'abcE4b10-2\000', '\000abcE4b10-3', 'abcE4b10-4\000abcE4b10-4-2'], 'b10')\n".. @@ -494,32 +498,41 @@ describe('eval', function()      -- Precondition: "a is actually unset and "0 is nonempty      eq('', eval("getregtype('a')"))      eq('', eval("getreg('a')")) -    execute("call setreg('0','text')") +    command("call setreg('0','text')")      -- This used to return a NULL list      -- which setreg didn't handle -    execute("let x = getreg('a',1,1)") -    execute("call setreg('0',x)") +    command("let x = getreg('a',1,1)") +    command("call setreg('0',x)")      -- nvim didn't crash and "0 was emptied      eq(2, eval("1+1"))      eq({}, eval("getreg('0',1,1)"))      -- x is a mutable list -    execute("let y = x") +    command("let y = x")      eq({}, eval("y")) -    execute("call add(x, 'item')") +    command("call add(x, 'item')")      eq({'item'}, eval("y"))    end) +  it('sets the unnamed register when the "u" option is passed to setreg', function() +    command("call setreg('a','a reg', 'cu')") +    eq("a reg", eval('@"')) +    command("call setreg('b','b reg', 'cu')") +    eq("b reg", eval('@"')) +    command("call setreg('c','c reg', 'c')") +    eq("b reg", eval('@"')) +  end) +    it('search and expressions', function() -    execute('so test_eval_setup.vim') -    execute([=[call SetReg('/', ['abc/'])]=]) -    execute([=[call SetReg('/', ["abc/\n"])]=]) -    execute([=[call SetReg('=', ['"abc/"'])]=]) -    execute([=[call SetReg('=', ["\"abc/\n\""])]=]) +    command('so test_eval_setup.vim') +    command([=[call SetReg('/', ['abc/'])]=]) +    command([=[call SetReg('/', ["abc/\n"])]=]) +    command([=[call SetReg('=', ['"abc/"'])]=]) +    command([=[call SetReg('=', ["\"abc/\n\""])]=])      expect([[ -       +        {{{2 setreg('/', ['abc/'])        /: type v; value: abc/ (['abc/']), expr: abc/ (['abc/'])        == @@ -536,35 +549,35 @@ describe('eval', function()    describe('system clipboard', function()      before_each(function() -      execute('let &runtimepath = "test/functional/fixtures,".&runtimepath') -      execute('call getreg("*")') -- force load of provider +      command('let &runtimepath = "test/functional/fixtures,".&runtimepath') +      command('call getreg("*")') -- force load of provider      end)      it('works', function()        insert([[  	Some first line (this text was at the top of the old test_eval.in). -	 +  	Note: system clipboard is saved, changed and restored. -	 +  	clipboard contents  	something else]]) -      execute('so test_eval_setup.vim') +      command('so test_eval_setup.vim')        -- Save and restore system clipboard. -      execute("let _clipreg = ['*', getreg('*'), getregtype('*')]") -      execute('let _clipopt = &cb') -      execute("let &cb='unnamed'") -      execute('5y') -      execute('AR *') -      execute('tabdo :windo :echo "hi"') -      execute('6y') -      execute('AR *') -      execute('let &cb=_clipopt') -      execute("call call('setreg', _clipreg)") +      command("let _clipreg = ['*', getreg('*'), getregtype('*')]") +      command('let _clipopt = &cb') +      command("let &cb='unnamed'") +      command('5y') +      command('AR *') +      command('tabdo :windo :echo "hi"') +      command('6y') +      command('AR *') +      command('let &cb=_clipopt') +      command("call call('setreg', _clipreg)")        expect([[  	Some first line (this text was at the top of the old test_eval.in). -	 +  	Note: system clipboard is saved, changed and restored. -	 +  	clipboard contents  	something else  	*: type V; value: clipboard contents]]..'\00'..[[ (['clipboard contents']), expr: clipboard contents]]..'\00'..[[ (['clipboard contents']) @@ -582,17 +595,17 @@ describe('eval', function()  	  $put =v:exception  	endtry        endfun]]) -    execute([[call ErrExe('call setreg()')]]) -    execute([[call ErrExe('call setreg(1)')]]) -    execute([[call ErrExe('call setreg(1, 2, 3, 4)')]]) -    execute([=[call ErrExe('call setreg([], 2)')]=]) -    execute([[call ErrExe('call setreg(1, {})')]]) -    execute([=[call ErrExe('call setreg(1, 2, [])')]=]) -    execute([=[call ErrExe('call setreg("/", ["1", "2"])')]=]) -    execute([=[call ErrExe('call setreg("=", ["1", "2"])')]=]) -    execute([=[call ErrExe('call setreg(1, ["", "", [], ""])')]=]) +    command([[call ErrExe('call setreg()')]]) +    command([[call ErrExe('call setreg(1)')]]) +    command([[call ErrExe('call setreg(1, 2, 3, 4)')]]) +    command([=[call ErrExe('call setreg([], 2)')]=]) +    command([[call ErrExe('call setreg(1, {})')]]) +    command([=[call ErrExe('call setreg(1, 2, [])')]=]) +    command([=[call ErrExe('call setreg("/", ["1", "2"])')]=]) +    command([=[call ErrExe('call setreg("=", ["1", "2"])')]=]) +    command([=[call ErrExe('call setreg(1, ["", "", [], ""])')]=])      expect([[ -       +        Executing call setreg()        Vim(call):E119: Not enough arguments for function: setreg        Executing call setreg(1) @@ -614,48 +627,38 @@ describe('eval', function()    end)    it('function name not starting with a capital', function() -    execute('try') -    execute('  func! g:test()') -    execute('    echo "test"') -    execute('  endfunc') -    execute('catch') -    execute('  let tmp = v:exception') -    execute('endtry') -    eq('Vim(function):E128: Function name must start with a capital or "s:": g:test()', eval('tmp')) +    eq('Vim(function):E128: Function name must start with a capital or "s:": g:test()\\nendfunction', +       exc_exec(dedent([[ +        function! g:test() +        endfunction]])))    end)    it('Function name followed by #', function() -    execute('try') -    execute('  func! test2() "#') -    execute('    echo "test2"') -    execute('  endfunc') -    execute('catch') -    execute('  let tmp = v:exception') -    execute('endtry') -    eq('Vim(function):E128: Function name must start with a capital or "s:": test2() "#', eval('tmp')) +    eq('Vim(function):E128: Function name must start with a capital or "s:": test2() "#\\nendfunction', +       exc_exec(dedent([[ +        function! test2() "# +        endfunction]])))    end)    it('function name includes a colon', function() -    execute('try') -    execute('  func! b:test()') -    execute('    echo "test"') -    execute('  endfunc') -    execute('catch') -    execute('  let tmp = v:exception') -    execute('endtry') -    eq('Vim(function):E128: Function name must start with a capital or "s:": b:test()', eval('tmp')) +    eq('Vim(function):E128: Function name must start with a capital or "s:": b:test()\\nendfunction', +       exc_exec(dedent([[ +        function! b:test() +        endfunction]])))    end)    it('function name starting with/without "g:", buffer-local funcref', function() -    execute('function! g:Foo(n)') -    execute("  $put ='called Foo(' . a:n . ')'") -    execute('endfunction') -    execute("let b:my_func = function('Foo')") -    execute('call b:my_func(1)') -    execute('echo g:Foo(2)') -    execute('echo Foo(3)') +    command([[ +      function! g:Foo(n) +        $put ='called Foo(' . a:n . ')' +      endfunction +    ]]) +    command("let b:my_func = function('Foo')") +    command('call b:my_func(1)') +    command('echo g:Foo(2)') +    command('echo Foo(3)')      expect([[ -       +        called Foo(1)        called Foo(2)        called Foo(3)]]) @@ -664,20 +667,20 @@ describe('eval', function()    it('script-local function used in Funcref must exist', function()      source([[        " Vim script used in test_eval.in.  Needed for script-local function. -       +        func! s:Testje()          return "foo"        endfunc -       +        let Bar = function('s:Testje') -       +        $put ='s:Testje exists: ' . exists('s:Testje')        $put ='func s:Testje exists: ' . exists('*s:Testje')        $put ='Bar exists: ' . exists('Bar')        $put ='func Bar exists: ' . exists('*Bar')        ]])      expect([[ -       +        s:Testje exists: 0        func s:Testje exists: 1        Bar exists: 1 @@ -685,12 +688,8 @@ describe('eval', function()    end)    it("using $ instead of '$' must give an error", function() -    execute('try') -    execute("  call append($, 'foobar')") -    execute('catch') -    execute('  let tmp = v:exception') -    execute('endtry') -    eq('Vim(call):E116: Invalid arguments for function append', eval('tmp')) +    eq('Vim(call):E116: Invalid arguments for function append', +       exc_exec('call append($, "foobar")'))    end)    it('getcurpos/setpos', function() @@ -699,13 +698,16 @@ describe('eval', function()        012345678        start:]]) -    execute('/^012345678') +    command('/^012345678')      feed('6l') -    execute('let sp = getcurpos()') +    wait() +    command('let sp = getcurpos()')      feed('0') -    execute("call setpos('.', sp)") +    wait() +    command("call setpos('.', sp)")      feed('jyl') -    execute('$put') +    wait() +    command('$put')      expect([[        012345678        012345678 @@ -715,18 +717,18 @@ describe('eval', function()    end)    it('substring and variable name', function() -    execute("let str = 'abcdef'") -    execute('let n = 3') +    command("let str = 'abcdef'") +    command('let n = 3')      eq('def', eval('str[n:]'))      eq('abcd', eval('str[:n]'))      eq('d', eval('str[n:n]')) -    execute('unlet n') -    execute('let nn = 3') +    command('unlet n') +    command('let nn = 3')      eq('def', eval('str[nn:]'))      eq('abcd', eval('str[:nn]'))      eq('d', eval('str[nn:nn]')) -    execute('unlet nn') -    execute('let b:nn = 4') +    command('unlet nn') +    command('let b:nn = 4')      eq('ef', eval('str[b:nn:]'))      eq('abcde', eval('str[:b:nn]'))      eq('e', eval('str[b:nn:b:nn]')) | 
