Mercurial > vim
view src/testdir/test_tagfunc.vim @ 19042:4be592d96c20 v8.2.0081
patch 8.2.0081: MS-Windows also need the change to support INIT4()
Commit: https://github.com/vim/vim/commit/467c32bd72efea09677f173fef7a3465d9ab7826
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jan 3 19:12:09 2020 +0100
patch 8.2.0081: MS-Windows also need the change to support INIT4()
Problem: MS-Windows also need the change to support INIT4().
Solution: Add the ctags arguments. (Ken Takata)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 03 Jan 2020 19:15:07 +0100 |
parents | 54ffc82f38a8 |
children | 8645b73b3645 |
line wrap: on
line source
" Test 'tagfunc' func TagFunc(pat, flag, info) let g:tagfunc_args = [a:pat, a:flag, a:info] let tags = [] for num in range(1,10) let tags += [{ \ 'cmd': '2', 'name': 'nothing'.num, 'kind': 'm', \ 'filename': 'Xfile1', 'user_data': 'somedata'.num, \}] endfor return tags endfunc func Test_tagfunc() set tagfunc=TagFunc new Xfile1 call setline(1, ['empty', 'one()', 'empty']) write call assert_equal({'cmd': '2', 'static': 0, \ 'name': 'nothing2', 'user_data': 'somedata2', \ 'kind': 'm', 'filename': 'Xfile1'}, taglist('.')[1]) call settagstack(win_getid(), {'items': []}) tag arbitrary call assert_equal('arbitrary', g:tagfunc_args[0]) call assert_equal('', g:tagfunc_args[1]) call assert_equal('somedata1', gettagstack().items[0].user_data) 5tag arbitrary call assert_equal('arbitrary', g:tagfunc_args[0]) call assert_equal('', g:tagfunc_args[1]) call assert_equal('somedata5', gettagstack().items[1].user_data) pop tag call assert_equal('arbitrary', g:tagfunc_args[0]) call assert_equal('', g:tagfunc_args[1]) call assert_equal('somedata5', gettagstack().items[1].user_data) let g:tagfunc_args=[] execute "normal! \<c-]>" call assert_equal('one', g:tagfunc_args[0]) call assert_equal('c', g:tagfunc_args[1]) set cpt=t let g:tagfunc_args=[] execute "normal! i\<c-n>\<c-y>" call assert_equal('ci', g:tagfunc_args[1]) call assert_equal('nothing1', getline('.')[0:7]) func BadTagFunc1(...) return 0 endfunc func BadTagFunc2(...) return [1] endfunc func BadTagFunc3(...) return [{'name': 'foo'}] endfunc for &tagfunc in ['BadTagFunc1', 'BadTagFunc2', 'BadTagFunc3'] try tag nothing call assert_false(1, 'tag command should have failed') catch call assert_exception('E987:') endtry exe 'delf' &tagfunc endfor func NullTagFunc(...) return v:null endfunc set tags= tfu=NullTagFunc call assert_fails('tag nothing', 'E426') delf NullTagFunc bwipe! set tags& tfu& cpt& call delete('Xfile1') endfunc " vim: shiftwidth=2 sts=2 expandtab