"============================================================================= " FILE: neosnippet_file.vim " AUTHOR: Shougo Matsushita " License: MIT license "============================================================================= function! unite#sources#neosnippet_file#define() abort return [s:source_user, s:source_runtime] endfunction " common action table let s:action_table = {} let s:action_table.neosnippet_source = { \ 'description' : 'neosnippet_source file', \ 'is_selectable' : 1, \ 'is_quit' : 1, \ } function! s:action_table.neosnippet_source.func(candidates) abort for candidate in a:candidates let snippet_name = candidate.action__path if snippet_name != '' call neosnippet#commands#_source(snippet_name) endif endfor endfunction " neosnippet source. let s:source_user = { \ 'name': 'neosnippet/user', \ 'description' : 'neosnippet user file', \ 'action_table' : copy(s:action_table), \ } function! s:source_user.gather_candidates(args, context) abort return s:get_snippet_candidates( \ neosnippet#get_user_snippets_directory()) endfunction let s:source_user.action_table.unite__new_candidate = { \ 'description' : 'create new user snippet', \ 'is_invalidate_cache' : 1, \ 'is_quit' : 1, \ } function! s:source_user.action_table.unite__new_candidate.func(candidate) abort let filename = input( \ 'New snippet file name: ', neosnippet#helpers#get_filetype()) if filename != '' call neosnippet#commands#_edit(filename) endif endfunction " neosnippet source. let s:source_runtime = { \ 'name': 'neosnippet/runtime', \ 'description' : 'neosnippet runtime file', \ 'action_table' : copy(s:action_table), \ } function! s:source_runtime.gather_candidates(args, context) abort return s:get_snippet_candidates( \ neosnippet#get_runtime_snippets_directory()) endfunction let s:source_runtime.action_table.unite__new_candidate = { \ 'description' : 'create new runtime snippet', \ 'is_invalidate_cache' : 1, \ 'is_quit' : 1, \ } function! s:source_runtime.action_table.unite__new_candidate.func(candidate) abort let filename = input( \ 'New snippet file name: ', neosnippet#helpers#get_filetype()) if filename != '' call neosnippet#commands#_edit('-runtime ' . filename) endif endfunction function! s:get_snippet_candidates(dirs) abort let _ = [] for directory in a:dirs let _ += map(split(unite#util#substitute_path_separator( \ globpath(directory, '**/*.snip*')), '\n'), "{ \ 'word' : v:val[len(directory)+1 :], \ 'action__path' : v:val, \ 'kind' : 'file', \ }") endfor return _ endfunction