Mercurial > vim-gutentags
view autoload/gutentags/cscope.vim @ 110:f1a6cdd692f0
unix: use proper signal names instead of numbers
In POSIX standard only several signals have assigned numbers, see [0].
'0' is EXIT, '3' is QUIT, '15' is TERM. '4' is not assigned in POSIX.
On Linux, FreeBSD, and Mac OS X '4' is assigned to ILL, which stands for
'Illegal instruction', see [1], par. 7.14 of [2]. Given that C-compilers
tend to produce valid instructions there's little point in trapping ILL.
Thus trap INT, QUIT, TERM, and EXIT signals. Note that INT replaced ILL.
[0]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#trap
[1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html
[2]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
author | Ilya Tumaykin <itumaykin@gmail.com> |
---|---|
date | Mon, 22 Feb 2016 05:28:53 +0300 |
parents | 99b95da1bed7 |
children | 286e5b3095d0 |
line wrap: on
line source
" Cscope module for Gutentags if !has('cscope') throw "Can't enable the cscope module for Gutentags, this Vim has ". \"no support for cscope files." endif " Global Options {{{ if !exists('g:gutentags_cscope_executable') let g:gutentags_cscope_executable = 'cscope' endif if !exists('g:gutentags_scopefile') let g:gutentags_scopefile = 'cscope.out' endif if !exists('g:gutentags_auto_add_cscope') let g:gutentags_auto_add_cscope = 1 endif " }}} " Gutentags Module Interface {{{ let s:runner_exe = gutentags#get_plat_file('update_scopedb') let s:added_dbs = [] function! gutentags#cscope#init(project_root) abort let l:dbfile_path = gutentags#get_cachefile( \a:project_root, g:gutentags_scopefile) let b:gutentags_files['cscope'] = l:dbfile_path if g:gutentags_auto_add_cscope && filereadable(l:dbfile_path) if index(s:added_dbs, l:dbfile_path) < 0 call add(s:added_dbs, l:dbfile_path) execute 'cs add ' . fnameescape(l:dbfile_path) endif 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 let l:cmd .= ' -p ' . a:proj_dir let l:cmd .= ' -f ' . a:tags_file let l:cmd .= ' ' let l:cmd .= gutentags#get_execute_cmd_suffix() call gutentags#trace("Running: " . l:cmd) call gutentags#trace("In: " . getcwd()) if !g:gutentags_fake if !(has('nvim') && exists('*jobwait')) if !g:gutentags_trace silent execute l:cmd else execute l:cmd endif else 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') call gutentags#add_progress('cscope', l:full_scopedb_file) else call gutentags#trace("(fake... not actually running)") endif call gutentags#trace("") endfunction " }}}