You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.8 KiB
VimL
67 lines
1.8 KiB
VimL
"============================================================================
|
|
" FILE: autoload/unite/sources/tsproject.vim
|
|
" AUTHOR: Quramy <yosuke.kurami@gmail.com>
|
|
"============================================================================
|
|
|
|
scriptencoding utf-8
|
|
|
|
let s:source = {
|
|
\ 'name': 'tsproject',
|
|
\ 'is_grouped': 1,
|
|
\ 'description': 'TypeScript project information',
|
|
\ }
|
|
|
|
function! s:source.gather_candidates(args, context)
|
|
if len(a:args)
|
|
let selected_group_name = a:args[0]
|
|
else
|
|
let selected_group_name = '.'
|
|
endif
|
|
|
|
let buf_name = expand('%:p')
|
|
let pinfo = tsuquyomi#projectInfo(buf_name)
|
|
|
|
let result = []
|
|
|
|
if has_key(pinfo, 'configFileName')
|
|
call add(result, {
|
|
\ 'group': 'tsconfig',
|
|
\ 'kind': 'file',
|
|
\ 'action__path': pinfo.configFileName,
|
|
\ 'word': pinfo.configFileName,
|
|
\ 'abbr': "\t".pinfo.configFileName,
|
|
\ 'source': 'tsproject'
|
|
\ })
|
|
else
|
|
call add(result, {
|
|
\ 'group': 'tsconfig',
|
|
\ 'kind': 'common',
|
|
\ 'is_dummy': 1,
|
|
\ 'word': '(your project does not have tsconfig.json)',
|
|
\ 'abbr': "\t(your project does not have tsconfig.json)",
|
|
\ 'source': 'tsproject'
|
|
\ })
|
|
endif
|
|
|
|
if has_key(pinfo, 'filteredFileNames')
|
|
for fileName in sort(copy(pinfo.filteredFileNames))
|
|
call add(result, {
|
|
\ 'group': 'files',
|
|
\ 'word': fileName,
|
|
\ 'abbr': "\t".fileName,
|
|
\ 'kind': 'file',
|
|
\ 'action__path': fileName,
|
|
\ 'source': 'tsproject'
|
|
\ })
|
|
endfor
|
|
endif
|
|
return result
|
|
endfunction
|
|
|
|
function! unite#sources#tsproject#define()
|
|
if tsuquyomi#config#isHigher(160)
|
|
return s:source
|
|
endif
|
|
endfunction
|
|
|