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