annotate autoload/gutentags/cscope.vim @ 66:a14a788e3809

Filetype specific ctags executable command If, for example, a variable `g:gutentags_ctags_executable_ruby` is found, its value will be used as the ctags executable command for ruby filetype files. Otherwise, it will default to global `g:gutentags_ctags_executable`
author marc <marc@lamarciana.com>
date Sun, 17 May 2015 10:39:20 +0200
parents 1a853b37eddf
children 99b95da1bed7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 " Cscope module for Gutentags
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 if !has('cscope')
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 throw "Can't enable the cscope module for Gutentags, this Vim has ".
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 \"no support for cscope files."
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 endif
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 " Global Options {{{
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 if !exists('g:gutentags_cscope_executable')
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 let g:gutentags_cscope_executable = 'cscope'
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 endif
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 if !exists('g:gutentags_scopefile')
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 let g:gutentags_scopefile = 'cscope.out'
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 endif
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 if !exists('g:gutentags_auto_add_cscope')
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 let g:gutentags_auto_add_cscope = 1
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 endif
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 " }}}
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 " Gutentags Module Interface {{{
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 let s:runner_exe = gutentags#get_plat_file('update_scopedb')
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 let s:added_dbs = []
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 function! gutentags#cscope#init(project_root) abort
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 let l:dbfile_path = gutentags#get_cachefile(
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 \a:project_root, g:gutentags_scopefile)
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 let b:gutentags_files['cscope'] = l:dbfile_path
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 if g:gutentags_auto_add_cscope && filereadable(l:dbfile_path)
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 if index(s:added_dbs, l:dbfile_path) < 0
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 call add(s:added_dbs, l:dbfile_path)
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 execute 'cs add ' . fnameescape(l:dbfile_path)
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 endif
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 endif
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 endfunction
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 function! gutentags#cscope#generate(proj_dir, tags_file, write_mode) abort
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 let l:cmd = gutentags#get_execute_cmd() . s:runner_exe
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 let l:cmd .= ' -e ' . g:gutentags_cscope_executable
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 let l:cmd .= ' -p ' . a:proj_dir
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 let l:cmd .= ' -f ' . a:tags_file
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 let l:cmd .= ' '
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 let l:cmd .= gutentags#get_execute_cmd_suffix()
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 call gutentags#trace("Running: " . l:cmd)
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 call gutentags#trace("In: " . getcwd())
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 if !g:gutentags_fake
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 if !g:gutentags_trace
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 silent execute l:cmd
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 else
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 execute l:cmd
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 endif
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 let l:full_scopedb_file = fnamemodify(a:tags_file, ':p')
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 call gutentags#add_progress('cscope', l:full_scopedb_file)
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 else
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62 call gutentags#trace("(fake... not actually running)")
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 endif
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64 call gutentags#trace("")
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
65 endfunction
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
66
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67 " }}}
1a853b37eddf Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68