Mercurial > vim-gutentags
changeset 279:4353f0dc8d99
Add support for lua port of cscope from cscope_maps.nvim
author | Dhananjay <dhananjay.latkar@gmail.com> |
---|---|
date | Fri, 14 Apr 2023 11:57:07 +0530 |
parents | abc91c5fb795 |
children | c33b43915b41 |
files | autoload/gutentags/cscope_maps.vim doc/gutentags.txt plat/unix/update_scopedb.sh |
diffstat | 3 files changed, 83 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/autoload/gutentags/cscope_maps.vim Fri Apr 14 11:57:07 2023 +0530 @@ -0,0 +1,77 @@ +" cscope_maps module for Gutentags + +if !has('nvim') || !exists(":Cscope") + throw "Can't enable the cscope_maps module for Gutentags, this Vim has ". + \"no support for cscope_maps files." +endif + +" Global Options {{{ + +if !exists('g:gutentags_cscope_executable_maps') + let g:gutentags_cscope_executable_maps = 'cscope' +endif + +if !exists('g:gutentags_scopefile_maps') + let g:gutentags_scopefile_maps = 'cscope.out' +endif + +if !exists('g:gutentags_cscope_build_inverted_index_maps') + let g:gutentags_cscope_build_inverted_index_maps = 0 +endif + +" }}} + +" Gutentags Module Interface {{{ + +let s:runner_exe = gutentags#get_plat_file('update_scopedb') +let s:unix_redir = (&shellredir =~# '%s') ? &shellredir : &shellredir . ' %s' +let s:added_dbs = [] + +function! gutentags#cscope_maps#init(project_root) abort + let l:dbfile_path = gutentags#get_cachefile( + \a:project_root, g:gutentags_scopefile_maps) + let b:gutentags_files['cscope_maps'] = l:dbfile_path +endfunction + +function! gutentags#cscope_maps#generate(proj_dir, tags_file, gen_opts) abort + let l:cmd = [s:runner_exe] + let l:cmd += ['-e', g:gutentags_cscope_executable_maps] + let l:cmd += ['-p', a:proj_dir] + let l:cmd += ['-f', a:tags_file] + let l:file_list_cmd = + \ gutentags#get_project_file_list_cmd(a:proj_dir) + if !empty(l:file_list_cmd) + let l:cmd += ['-L', '"' . l:file_list_cmd . '"'] + endif + if g:gutentags_cscope_build_inverted_index_maps + let l:cmd += ['-I'] + endif + let l:cmd = gutentags#make_args(l:cmd) + + call gutentags#trace("Running: " . string(l:cmd)) + call gutentags#trace("In: " . getcwd()) + if !g:gutentags_fake + let l:job_opts = gutentags#build_default_job_options('cscope_maps') + let l:job = gutentags#start_job(l:cmd, l:job_opts) + call gutentags#add_job('cscope_maps', a:tags_file, l:job) + else + call gutentags#trace("(fake... not actually running)") + endif +endfunction + +function! gutentags#cscope_maps#on_job_exit(job, exit_val) abort + let l:job_idx = gutentags#find_job_index_by_data('cscope_maps', a:job) + let l:dbfile_path = gutentags#get_job_tags_file('cscope_maps', l:job_idx) + call gutentags#remove_job('cscope_maps', l:job_idx) + + if a:exit_val == 0 + call gutentags#trace("NOOP! cscope_maps does not need add or reset command") + elseif !g:__gutentags_vim_is_leaving + call gutentags#warning( + \"cscope job failed, returned: ". + \string(a:exit_val)) + endif +endfunction + +" }}} +
--- a/doc/gutentags.txt Sun Apr 09 10:38:14 2023 -0700 +++ b/doc/gutentags.txt Fri Apr 14 11:57:07 2023 +0530 @@ -320,6 +320,9 @@ - `gtags_cscope`: same as `cscope` but uses GNU's `gtags` executable and database. + - `cscope_maps`: same as `cscope`. Supports + `cscope_maps.nvim`. + Defaults to `[ctags]`. *gutentags_project_root*
--- a/plat/unix/update_scopedb.sh Sun Apr 09 10:38:14 2023 -0700 +++ b/plat/unix/update_scopedb.sh Fri Apr 14 11:57:07 2023 +0530 @@ -84,7 +84,9 @@ done > "${DB_FILE}.files" fi else - find . -type f ! -name ${DB_FILE} | while read -r l; do + find . -type f ! -name ${DB_FILE} \ + \( ! -iname "cscope*" ! -iname "ncscope*" ! -iname "*.patch" \) \ + | while read -r l; do echo "\"${l}\"" done > "${DB_FILE}.files" fi