Mercurial > vim-gutentags
annotate 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 |
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') |
196
cac059bce038
Log instead of echoing to stdout
Chayoung You <yousbe@gmail.com>
parents:
195
diff
changeset
|
27 let s:unix_redir = (&shellredir =~# '%s') ? &shellredir : &shellredir . ' %s' |
44
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
28 let s:added_dbs = [] |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
29 |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 function! gutentags#cscope#init(project_root) abort |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
31 let l:dbfile_path = gutentags#get_cachefile( |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
32 \a:project_root, g:gutentags_scopefile) |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
33 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
|
34 |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
35 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
|
36 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
|
37 call add(s:added_dbs, l:dbfile_path) |
195
fd863d1bcfb9
Suppress warning from cscope add
Chayoung You <yousbe@gmail.com>
parents:
192
diff
changeset
|
38 silent! execute 'cs add ' . fnameescape(l:dbfile_path) |
44
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 endif |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
41 endfunction |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
42 |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
43 function! gutentags#cscope#generate(proj_dir, tags_file, gen_opts) abort |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
44 let l:cmd = [s:runner_exe] |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
45 let l:cmd += ['-e', g:gutentags_cscope_executable] |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
46 let l:cmd += ['-p', a:proj_dir] |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
47 let l:cmd += ['-f', a:tags_file] |
136
286e5b3095d0
Allow restricting tag generation to files listed by custom commands
Stephen Kent <smkent@smkent.net>
parents:
72
diff
changeset
|
48 let l:file_list_cmd = |
192
09cc408db201
Fix cscope generation use of proj_dir
Simon Mutch <smutch@unimelb.edu.au>
parents:
179
diff
changeset
|
49 \ gutentags#get_project_file_list_cmd(a:proj_dir) |
136
286e5b3095d0
Allow restricting tag generation to files listed by custom commands
Stephen Kent <smkent@smkent.net>
parents:
72
diff
changeset
|
50 if !empty(l:file_list_cmd) |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
51 let l:cmd += ['-L', '"' . l:file_list_cmd . '"'] |
136
286e5b3095d0
Allow restricting tag generation to files listed by custom commands
Stephen Kent <smkent@smkent.net>
parents:
72
diff
changeset
|
52 endif |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
53 let l:cmd = gutentags#make_args(l:cmd) |
44
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
54 |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
55 call gutentags#trace("Running: " . string(l:cmd)) |
179 | 56 call gutentags#trace("In: " . getcwd()) |
44
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
57 if !g:gutentags_fake |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
58 let l:job_opts = gutentags#build_default_job_options('cscope') |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
59 let l:job = gutentags#start_job(l:cmd, l:job_opts) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
60 call gutentags#add_job('cscope', a:tags_file, l:job) |
44
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 |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
64 endfunction |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
65 |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
66 function! gutentags#cscope#on_job_exit(job, exit_val) abort |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
67 let l:job_idx = gutentags#find_job_index_by_data('cscope', a:job) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
68 let l:dbfile_path = gutentags#get_job_tags_file('cscope', l:job_idx) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
69 call gutentags#remove_job('cscope', l:job_idx) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
70 |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
71 if a:exit_val == 0 |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
72 if index(s:added_dbs, l:dbfile_path) < 0 |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
73 call add(s:added_dbs, l:dbfile_path) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
74 silent! execute 'cs add ' . fnameescape(l:dbfile_path) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
75 else |
215
8e6156c4dff1
Suppress warnings from cscope reset
Chayoung You <yousbe@gmail.com>
parents:
202
diff
changeset
|
76 silent! execute 'cs reset' |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
77 endif |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
78 else |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
79 call gutentags#warning( |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
80 \"gutentags: cscope job failed, returned: ". |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
81 \string(a:exit_val)) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
82 endif |
44
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
83 endfunction |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
84 |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
85 " }}} |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
86 |