Mercurial > vim-gutentags
view autoload/gutentags/cscope.vim @ 196:cac059bce038
Log instead of echoing to stdout
author | Chayoung You <yousbe@gmail.com> |
---|---|
date | Wed, 19 Jul 2017 14:24:00 +0900 |
parents | fd863d1bcfb9 |
children | f7a417234dea |
line wrap: on
line source
" Cscope module for Gutentags if !has('cscope') throw "Can't enable the cscope module for Gutentags, this Vim has ". \"no support for cscope files." endif " Global Options {{{ if !exists('g:gutentags_cscope_executable') let g:gutentags_cscope_executable = 'cscope' endif if !exists('g:gutentags_scopefile') let g:gutentags_scopefile = 'cscope.out' endif if !exists('g:gutentags_auto_add_cscope') let g:gutentags_auto_add_cscope = 1 endif " }}} " Gutentags Module Interface {{{ let s:runner_exe = gutentags#get_plat_file('update_scopedb') let s:unix_redir = (&shellredir =~# '%s') ? &shellredir : &shellredir . ' %s' let s:added_dbs = [] function! gutentags#cscope#init(project_root) abort let l:dbfile_path = gutentags#get_cachefile( \a:project_root, g:gutentags_scopefile) let b:gutentags_files['cscope'] = l:dbfile_path if g:gutentags_auto_add_cscope && filereadable(l:dbfile_path) if index(s:added_dbs, l:dbfile_path) < 0 call add(s:added_dbs, l:dbfile_path) silent! execute 'cs add ' . fnameescape(l:dbfile_path) endif endif endfunction function! gutentags#cscope#command_terminated(job_id, data, event) abort if a:data == 0 if index(s:added_dbs, self.db_file) < 0 call add(s:added_dbs, self.db_file) silent! execute 'cs add ' . fnameescape(s:db_file) else execute 'cs reset' endif endif endfunction function! gutentags#cscope#generate(proj_dir, tags_file, write_mode) abort let l:cmd = gutentags#get_execute_cmd() . s:runner_exe let l:cmd .= ' -e ' . g:gutentags_cscope_executable let l:cmd .= ' -p ' . a:proj_dir let l:cmd .= ' -f ' . a:tags_file let l:file_list_cmd = \ gutentags#get_project_file_list_cmd(a:proj_dir) if !empty(l:file_list_cmd) let l:cmd .= ' -L "' . l:file_list_cmd . '"' endif if g:gutentags_trace if has('win32') let l:cmd .= ' -l "' . a:tags_file . '.log"' else let l:cmd .= ' ' . printf(s:unix_redir, '"' . a:tags_file . '.log"') endif else if !has('win32') let l:cmd .= ' ' . printf(s:unix_redir, '/dev/null') endif endif let l:cmd .= ' ' let l:cmd .= gutentags#get_execute_cmd_suffix() call gutentags#trace("Running: " . l:cmd) call gutentags#trace("In: " . getcwd()) if !g:gutentags_fake if !(has('nvim') && exists('*jobwait')) if !g:gutentags_trace silent execute l:cmd else execute l:cmd endif else let job_dict = { 'db_file': a:tags_file, 'on_exit' : function('gutentags#cscope#command_terminated') } let job_cmd = [ s:runner_exe, \ '-e', g:gutentags_cscope_executable, \ '-p', a:proj_dir, \ '-f', a:tags_file ] let job_id = jobstart(job_cmd, job_dict) endif let l:full_scopedb_file = fnamemodify(a:tags_file, ':p') call gutentags#add_progress('cscope', l:full_scopedb_file) else call gutentags#trace("(fake... not actually running)") endif call gutentags#trace("") endfunction " }}}