+++ /dev/null
-" unite source: tags file and/or cscope database selection for projects using
-" mkbuild
-
-let s:save_cpo = &cpo
-set cpo&vim
-
-let s:source = {
- \ 'name': 'xrefs',
- \ 'description': 'select cross references from a directory',
- \ 'action_table': {
- \ 'setxrefs' : { 'is_selectable': 1 },
- \ },
- \ 'default_action': 'setxrefs'
- \ }
-
-function! s:source.action_table.setxrefs.func(candidates)
- call s:select(a:candidates[0].word)
-endfunction
-
-function! s:select(dirname)
- if empty(a:dirname)
- return
- endif
- let file = a:dirname . "/tags"
- let &tags=''
- if filereadable(file)
- let &tags = file
- endif
- if has('cscope')
- let file = a:dirname . "/cscope.out"
- execute 'cscope kill -1'
- if filereadable(file)
- execute 'cscope add ' . file
- endif
- endif
-endfunction
-
-" Return the results of a command without the ending newline
-function! s:chompsys(cmd)
- return substitute(system(a:cmd), '\n$', '', '')
-endfunction
-
-function! s:source.gather_candidates(args, context)
- let cmd = 'find . -maxdepth 4 -type f -name tags -o -name cscope.out | ' .
- \ 'while read f; do echo $(dirname $f); done | sort -u | sed -e "s|\./||"'
- let xrefdirs = split(s:chompsys(cmd), '\n')
-
- return map(xrefdirs, '{ "word": v:val }')
-endfunction
-
-function! unite#sources#xrefs#define()
- return s:source
-endfunction
-
-let &cpo = s:save_cpo
-unlet s:save_cpo