Merged unite source by Skeept.

This commit is contained in:
Holger Rapp 2014-04-15 08:19:23 +02:00
commit 04ef0f8f5c
3 changed files with 87 additions and 1 deletions

View File

@ -0,0 +1,56 @@
let s:save_cpo = &cpo
set cpo&vim
let s:unite_source = {
\ 'name': 'ultisnips',
\ 'hooks': {},
\ 'action_table': {},
\ 'default_action': 'expand',
\ }
let s:unite_source.action_table.preview = {
\ 'description' : 'ultisnips snippets',
\ 'is_quit' : 0,
\ }
function! s:unite_source.action_table.preview.func(candidate)
" no nice preview at this point, cannot get snippet text
let snippet_preview = a:candidate['word']
echo snippet_preview
endfunction
let s:unite_source.action_table.expand = {
\ 'description': 'expand the current snippet',
\ 'is_quit': 1
\}
function! s:unite_source.action_table.expand.func(candidate)
let delCurrWord = (getline(".")[col(".")-1] == " ") ? "" : "diw"
exe "normal " . delCurrWord . "a" . a:candidate['trigger'] . " "
call UltiSnips#ExpandSnippet()
return ''
endfunction
function! s:unite_source.gather_candidates(args, context)
let default_val = {'word': '', 'unite__abbr': '', 'is_dummy': 0, 'source':
\ 'ultisnips', 'unite__is_marked': 0, 'kind': 'command', 'is_matched': 1,
\ 'is_multiline': 0}
let snippet_list = UltiSnips#SnippetsInCurrentScope()
let canditates = []
for snip in items(snippet_list)
let curr_val = copy(default_val)
let curr_val['word'] = snip[0] . " " . snip[1]
let curr_val['trigger'] = snip[0]
call add(canditates, curr_val)
endfor
return canditates
endfunction
function! unite#sources#ultisnips#define()
return s:unite_source
endfunction
"unlet s:unite_source
let &cpo = s:save_cpo
unlet s:save_cpo

View File

@ -1284,6 +1284,22 @@ offers a really nice completion dialogue for snippets.
neocomplete - UltiSnips ships with a source for neocomplete and therefore neocomplete - UltiSnips ships with a source for neocomplete and therefore
offers out of the box completion dialogue support for it too. offers out of the box completion dialogue support for it too.
unite - UltiSnips has a source for unite. As an example of how you can use the
it add the following function and mappings to your vimrc: >
function! UltiSnipsCallUnite()
Unite -start-insert -winheight=100 -immediately -no-empty ultisnips
return ''
endfunction
inoremap <silent> <F12> <C-R>=(pumvisible()? "\<LT>C-E>":"")<CR><C-R>=UltiSnipsCallUnite()<CR>
nnoremap <silent> <F12> a<C-R>=(pumvisible()? "\<LT>C-E>":"")<CR><C-R>=UltiSnipsCallUnite()<CR>
When typing <F12> in either insert or normal mode you will get the unite
interface with matching snippets. Pressing enter will expand the corresponding
snippet. If only one snippet matches the text in front of the cursor will be
expanded when you press the <F12> key.
Supertab - UltiSnips has built-in support for Supertab. Just use a recent Supertab - UltiSnips has built-in support for Supertab. Just use a recent
enough version of both plugins and <tab> will either expand a snippet or defer enough version of both plugins and <tab> will either expand a snippet or defer
to Supertab for expansion. to Supertab for expansion.

14
test.py
View File

@ -3406,6 +3406,20 @@ class Plugin_Neocomplete_BugTest(_VimTest):
vim_config.append('let g:neocomplete#enable_auto_delimiter = 1') vim_config.append('let g:neocomplete#enable_auto_delimiter = 1')
vim_config.append('let g:neocomplete#enable_refresh_always = 1') vim_config.append('let g:neocomplete#enable_refresh_always = 1')
# End: Plugin: Neocomplete #}}} # End: Plugin: Neocomplete #}}}
# Plugin: unite {{{#
class Plugin_unite_BugTest(_VimTest):
plugins = ["Shougo/unite.vim"]
snippets = ("t", "Hello", "", "w")
keys = "iab\\ t=UltiSnipsCallUnite()\n"
wanted = "iab\\ Hello "
def _extra_options_pre_init(self, vim_config):
vim_config.append(r'set iskeyword+=\\ ')
vim_config.append('function! UltiSnipsCallUnite()')
vim_config.append(' Unite -start-insert -winheight=100 -immediately -no-empty ultisnips')
vim_config.append(' return ""')
vim_config.append('endfunction')
# End: Plugin: unite #}}}
# Plugin: Supertab {{{# # Plugin: Supertab {{{#
class Plugin_SuperTab_SimpleTest(_VimTest): class Plugin_SuperTab_SimpleTest(_VimTest):
plugins = ["ervandew/supertab"] plugins = ["ervandew/supertab"]