annotate autoload/gutentags/cscope.vim @ 239:ac9adbec887b

Add `g:gutentags_cscope_build_inverted_index` option
author Chayoung You <yousbe@gmail.com>
date Wed, 19 Dec 2018 20:49:22 +0900
parents 8e6156c4dff1
children ac312dc3c111
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
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
411f3fa915f5 Back to getcwd()
Henry Kupty <hkupty@gmail.com>
parents: 168
diff changeset
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(
b50b6d0f82dd Refactor for Vim8/Neovim job support.
Ludovic Chabant <ludovic@chabant.com>
parents: 199
diff changeset
87 \"gutentags: cscope job failed, returned: ".
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