diff autoload/gutentags/cscope.vim @ 44:1a853b37eddf

Add some mostly-working Cscope module (for Windows).
author Ludovic Chabant <ludovic@chabant.com>
date Fri, 20 Feb 2015 14:37:11 -0800
parents
children 99b95da1bed7
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/autoload/gutentags/cscope.vim	Fri Feb 20 14:37:11 2015 -0800
@@ -0,0 +1,68 @@
+" 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: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)
+            execute 'cs add ' . fnameescape(l:dbfile_path)
+        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: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 !g:gutentags_trace
+            silent execute l:cmd
+        else
+            execute l:cmd
+        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
+
+" }}}
+