" targets.vim Provides additional text objects " Author: Christian Wellenbrock " License: MIT license set runtimepath+=../ set softtabstop=16 expandtab source ../plugin/targets.vim function! s:execute(operation, motions) if a:operation == 'c' execute "normal " . a:operation . a:motions . "_" elseif a:operation == 'v' execute "normal " . a:operation . a:motions normal r_ else execute "normal " . a:operation . a:motions endif if a:operation == 'y' execute "normal A\'\\"'" endif execute "normal I" . a:operation . a:motions . "\\" endfunction function! s:testBasic() edit test1.in normal gg0 for delset in [ \ [ '(', ')', 'b' ], \ [ '{', '}', 'B' ], \ [ '[', ']' ], \ [ '<', '>' ], \ [ 't' ] \ ] normal "lyy for op in [ 'c', 'd', 'y', 'v' ] for cnt in [ '', '1', '2' ] for ln in [ 'l', '', 'n' ] for iaIA in [ 'I', 'i', 'a', 'A' ] for del in delset execute "normal \"lpfx" call s:execute(op, cnt . iaIA . ln . del) endfor endfor endfor endfor endfor normal + endfor normal + for del in [ "'", '"', '`' ] normal "lyy for op in [ 'c', 'd', 'y', 'v' ] for cnt in [ '', '1', '2' ] for LlnN in [ 'l', '', 'n' ] for iaIA in [ 'I', 'i', 'a', 'A' ] execute "normal \"lpfx" call s:execute(op, cnt . iaIA . LlnN . del) endfor endfor endfor endfor normal + endfor normal + for del in [ ',', '.', ';', ':', '+', '-', '=', '~', '_', '*', '#', '/', '|', '\', '&', '$' ] normal "lyy for op in [ 'c', 'd', 'y', 'v' ] for cnt in [ '', '1', '2' ] for LlnN in [ 'L', 'l', '', 'n', 'N' ] for iaIA in [ 'I', 'i', 'a', 'A' ] execute "normal \"lpfx" call s:execute(op, cnt . iaIA . LlnN . del) endfor endfor endfor endfor normal + endfor normal + normal "lyy for op in [ 'c', 'd', 'y', 'v' ] for cnt in [ '', '1', '2' ] for ln in [ 'l', '', 'n' ] for iaIA in [ 'I', 'i', 'a', 'A' ] execute "normal \"lpfx" call s:execute(op, cnt . iaIA . ln . 'a') endfor endfor endfor endfor write! test1.out endfunction function! s:testMultiline() edit! test2.in normal gg0 execute "normal /comment 1\" set autoindent execute "normal cin{foo\" set autoindent& execute "normal /comment 2\" execute "normal din{" execute "normal /comment 3\" execute "normal cin;foo\" execute "normal /comment 4\" execute "normal cin`foo\" execute "normal /comment 5\" execute "normal cI{foo\" write! test2.out endfunction function s:testSeeking() edit! test3.in normal gg0 for c in split('ABCDEFGHI', '\zs') execute "normal /" . c . "\" execute "normal ci)" . c . "\" endfor for c in split('JKLMNO', '\zs') execute "normal /" . c . "\" execute "normal ci'" . c . "\" endfor write! test3.out endfunction function s:testVisual() edit! test4.in normal gg0 for delset in [ \ [ '(', ')', 'b' ], \ [ '{', '}', 'B' ], \ [ '[', ']' ], \ [ '<', '>' ], \ [ 't' ] \ ] normal "lyy for ia in [ 'i', 'a' ] for del in delset normal "lpfx execute "normal v" . ia . del . ia . del . "r_" endfor endfor normal + endfor write! test4.out endfunction function s:testModifiers() edit! test5.in normal gg0 normal fxvItr_ write! test5.out endfunction function s:testEmpty() edit! test6.in normal gg0 normal ci"foo normal + normal ci(foo normal + normal ci,foo write! test6.out endfunction function s:testQuotes() edit! test7.in normal gg0 normal ci"A normal + normal cin"A normal + normal c2in"B normal +fx normal ci"D normal +fx normal cin"D normal +fx normal c2in"E normal +fx normal cil"C normal +fx normal c2il"B normal +fx normal ci"X normal +fx normal cin"D normal +fx normal c2in"E normal +fx normal cil"C normal +fx normal c2il"B normal +fx normal ci"C normal +fx normal cil"C normal +fx normal c2il"B write! test7.out endfunction call s:testBasic() call s:testMultiline() call s:testSeeking() call s:testVisual() call s:testModifiers() call s:testEmpty() call s:testQuotes() quit!