Mercurial > vim-gutentags
annotate autoload/gutentags/cscope.vim @ 241:ac312dc3c111
Don't duplicate the `gutentags:` message prefix.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 12 Mar 2019 18:56:54 -0700 |
parents | ac9adbec887b |
children | 52be4cf89810 |
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 |
239
ac9adbec887b
Add `g:gutentags_cscope_build_inverted_index` option
Chayoung You <yousbe@gmail.com>
parents:
215
diff
changeset
|
22 if !exists('g:gutentags_cscope_build_inverted_index') |
ac9adbec887b
Add `g:gutentags_cscope_build_inverted_index` option
Chayoung You <yousbe@gmail.com>
parents:
215
diff
changeset
|
23 let g:gutentags_cscope_build_inverted_index = 0 |
ac9adbec887b
Add `g:gutentags_cscope_build_inverted_index` option
Chayoung You <yousbe@gmail.com>
parents:
215
diff
changeset
|
24 endif |
ac9adbec887b
Add `g:gutentags_cscope_build_inverted_index` option
Chayoung You <yousbe@gmail.com>
parents:
215
diff
changeset
|
25 |
44
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
26 " }}} |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
28 " Gutentags Module Interface {{{ |
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 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
|
31 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
|
32 let s:added_dbs = [] |
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 function! gutentags#cscope#init(project_root) abort |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
35 let l:dbfile_path = gutentags#get_cachefile( |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
36 \a:project_root, g:gutentags_scopefile) |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
37 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
|
38 |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
39 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
|
40 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
|
41 call add(s:added_dbs, l:dbfile_path) |
195
fd863d1bcfb9
Suppress warning from cscope add
Chayoung You <yousbe@gmail.com>
parents:
192
diff
changeset
|
42 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
|
43 endif |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
44 endif |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
45 endfunction |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
46 |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
47 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
|
48 let l:cmd = [s:runner_exe] |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
49 let l:cmd += ['-e', g:gutentags_cscope_executable] |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
50 let l:cmd += ['-p', a:proj_dir] |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
51 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
|
52 let l:file_list_cmd = |
192
09cc408db201
Fix cscope generation use of proj_dir
Simon Mutch <smutch@unimelb.edu.au>
parents:
179
diff
changeset
|
53 \ 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
|
54 if !empty(l:file_list_cmd) |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
55 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
|
56 endif |
239
ac9adbec887b
Add `g:gutentags_cscope_build_inverted_index` option
Chayoung You <yousbe@gmail.com>
parents:
215
diff
changeset
|
57 if g:gutentags_cscope_build_inverted_index |
ac9adbec887b
Add `g:gutentags_cscope_build_inverted_index` option
Chayoung You <yousbe@gmail.com>
parents:
215
diff
changeset
|
58 let l:cmd += ['-I'] |
ac9adbec887b
Add `g:gutentags_cscope_build_inverted_index` option
Chayoung You <yousbe@gmail.com>
parents:
215
diff
changeset
|
59 endif |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
60 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
|
61 |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
62 call gutentags#trace("Running: " . string(l:cmd)) |
179 | 63 call gutentags#trace("In: " . getcwd()) |
44
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
64 if !g:gutentags_fake |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
65 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
|
66 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
|
67 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
|
68 else |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
69 call gutentags#trace("(fake... not actually running)") |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
70 endif |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
71 endfunction |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
72 |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
73 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
|
74 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
|
75 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
|
76 call gutentags#remove_job('cscope', l:job_idx) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
77 |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
78 if a:exit_val == 0 |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
79 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
|
80 call add(s:added_dbs, l:dbfile_path) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
81 silent! execute 'cs add ' . fnameescape(l:dbfile_path) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
82 else |
215
8e6156c4dff1
Suppress warnings from cscope reset
Chayoung You <yousbe@gmail.com>
parents:
202
diff
changeset
|
83 silent! execute 'cs reset' |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
84 endif |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
85 else |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
86 call gutentags#warning( |
241
ac312dc3c111
Don't duplicate the `gutentags:` message prefix.
Ludovic Chabant <ludovic@chabant.com>
parents:
239
diff
changeset
|
87 \"cscope job failed, returned: ". |
202
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
88 \string(a:exit_val)) |
b50b6d0f82dd
Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
89 endif |
44
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
90 endfunction |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
91 |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
92 " }}} |
1a853b37eddf
Add some mostly-working Cscope module (for Windows).
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
93 |