changeset 72:99b95da1bed7

Add Neovim support for cscope
author Jonathan Buschmann <jonthn@pinacea.com>
date Sat, 02 May 2015 00:21:19 +0200
parents 2d407e62d254
children 130905a7fb9a
files autoload/gutentags/cscope.vim
diffstat 1 files changed, 23 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/autoload/gutentags/cscope.vim	Sat May 02 00:19:02 2015 +0200
+++ b/autoload/gutentags/cscope.vim	Sat May 02 00:21:19 2015 +0200
@@ -39,6 +39,17 @@
     endif
 endfunction
 
+function! gutentags#cscope#command_terminated(job_id, data, event) abort
+    if a:data == 0
+        if index(s:added_dbs, self.db_file) < 0
+            call add(s:added_dbs, self.db_file)
+            execute 'cs add ' . fnameescape(s:db_file)
+        else
+            execute 'cs reset'
+        endif
+    endif
+endfunction
+
 function! gutentags#cscope#generate(proj_dir, tags_file, write_mode) abort
     let l:cmd = gutentags#get_execute_cmd() . s:runner_exe
     let l:cmd .= ' -e ' . g:gutentags_cscope_executable
@@ -50,10 +61,19 @@
     call gutentags#trace("Running: " . l:cmd)
     call gutentags#trace("In:      " . getcwd())
     if !g:gutentags_fake
-        if !g:gutentags_trace
-            silent execute l:cmd
+        if !(has('nvim') && exists('*jobwait'))
+            if !g:gutentags_trace
+                silent execute l:cmd
+            else
+                execute l:cmd
+            endif
         else
-            execute l:cmd
+            let job_dict = { 'db_file': a:tags_file, 'on_exit' : function('gutentags#cscope#command_terminated') }
+            let job_cmd = [ s:runner_exe,
+                        \ '-e', g:gutentags_cscope_executable,
+                        \ '-p', a:proj_dir,
+                        \ '-f', a:tags_file ]
+            let job_id = jobstart(job_cmd, job_dict)
         endif
 
         let l:full_scopedb_file = fnamemodify(a:tags_file, ':p')