Mercurial > vim-gutentags
view autoload/gutentags/cscope.vim @ 235:def58b9d22c6
Exclude cscope from default file list command
With default setup gutentags generate file list for cscope using simple
`find -type f` command in update_scopedb.sh. Subsequent invocations of
this script causes unbounded growth of cscope database because cscope
indexes itself every time.
This change excludes cscope database file from default file list command
for cscope database generation so it will work properly by default.
Another option is to use custom file list command like `ag -l` that will
generate files known to source control, that is without cscope database
file.
author | Alex Dzyoba <alex@dzyoba.com> |
---|---|
date | Tue, 18 Dec 2018 23:32:20 +0300 |
parents | 8e6156c4dff1 |
children | ac9adbec887b |
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#generate(proj_dir, tags_file, gen_opts) abort let l: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 let l:cmd = gutentags#make_args(l:cmd) call gutentags#trace("Running: " . string(l:cmd)) call gutentags#trace("In: " . getcwd()) if !g:gutentags_fake let l:job_opts = gutentags#build_default_job_options('cscope') let l:job = gutentags#start_job(l:cmd, l:job_opts) call gutentags#add_job('cscope', a:tags_file, l:job) else call gutentags#trace("(fake... not actually running)") endif endfunction function! gutentags#cscope#on_job_exit(job, exit_val) abort let l:job_idx = gutentags#find_job_index_by_data('cscope', a:job) let l:dbfile_path = gutentags#get_job_tags_file('cscope', l:job_idx) call gutentags#remove_job('cscope', l:job_idx) if a:exit_val == 0 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) else silent! execute 'cs reset' endif else call gutentags#warning( \"gutentags: cscope job failed, returned: ". \string(a:exit_val)) endif endfunction " }}}