"============================================================================= " FILE: file_include.vim " AUTHOR: Shougo Matsushita " manga_osyo (Original) " License: MIT license "============================================================================= function! unite#sources#file_include#define() abort return s:source endfunction let s:source = { \ 'name' : 'file_include', \ 'description' : 'candidates from include files', \ 'hooks' : {}, \} function! s:source.hooks.on_init(args, context) abort let a:context.source__include_files = \ neoinclude#include#get_include_files(bufnr('%')) let a:context.source__path = &path endfunction function! s:source.gather_candidates(args, context) abort let files = map(copy(a:context.source__include_files), '{ \ "word" : neoinclude#util#substitute_path_separator(v:val), \ "abbr" : neoinclude#util#substitute_path_separator(v:val), \ "source" : "file_include", \ "kind" : "file", \ "action__path" : v:val \ }') for word in files " Path search. for path in map(split(a:context.source__path, ','), \ 'neoinclude#util#substitute_path_separator(v:val)') if path != '' && neoinclude#util#head_match(word.word, path . '/') let word.abbr = word.abbr[len(path)+1 : ] break endif endfor endfor return files endfunction