From cc15145429f39b3d3fa2fc15c6b7120e4c9ae2db Mon Sep 17 00:00:00 2001 From: Helder Jorge Rodrigues Inacio Date: Mon, 31 Mar 2014 21:44:31 -0400 Subject: [PATCH] add unite source --- autoload/unite/sources/ultisnips.vim | 56 ++++++++++++++++++++++++++++ doc/UltiSnips.txt | 10 +++++ 2 files changed, 66 insertions(+) create mode 100644 autoload/unite/sources/ultisnips.vim diff --git a/autoload/unite/sources/ultisnips.vim b/autoload/unite/sources/ultisnips.vim new file mode 100644 index 0000000..30e2d83 --- /dev/null +++ b/autoload/unite/sources/ultisnips.vim @@ -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 diff --git a/doc/UltiSnips.txt b/doc/UltiSnips.txt index e63eb79..1ae7599 100644 --- a/doc/UltiSnips.txt +++ b/doc/UltiSnips.txt @@ -1284,6 +1284,16 @@ offers a really nice completion dialogue for snippets. neocomplete - UltiSnips ships with a source for neocomplete and therefore offers out of the box completion dialogue support for it too. +unite - similarly to neocomplete UltiSnips now has a source for unite. +As an example of how you can use the unite source add the following mappings to +your vimrc: + + nnoremap :Unite -start-insert ultisnips + inoremap :Unite -start-insert ultisnips + +Then typing in either insert or normal mode you will get unite interface +with matching snippets. Pressing enter will expand the corresponding snippet. + Supertab - UltiSnips has built-in support for Supertab. Just use a recent enough version of both plugins and will either expand a snippet or defer to Supertab for expansion.