view plugin/gutentags.vim @ 254:52be4cf89810

Don't complain when the job gets killed when Vim exits. This happens on Neovim, where the jobs seem to get killed before Vim exits, and so Gutentags has enough time to print a warning.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 26 Oct 2019 00:40:18 -0700
parents 050d0549ecf3
children 6030953258fe
line wrap: on
line source

" gutentags.vim - Automatic ctags management for Vim
" Maintainer:   Ludovic Chabant <http://ludovic.chabant.com>
" Version:      2.0.0

" Globals {{{

if (&cp || get(g:, 'gutentags_dont_load', 0))
    finish
endif

if v:version < 704
    echoerr "gutentags: this plugin requires vim >= 7.4."
    finish
endif

if !(has('job') || (has('nvim') && exists('*jobwait')))
    echoerr "gutentags: this plugin requires the job API from Vim8 or Neovim."
    finish
endif

let g:gutentags_debug = get(g:, 'gutentags_debug', 0)

if (exists('g:loaded_gutentags') && !g:gutentags_debug)
    finish
endif
if (exists('g:loaded_gutentags') && g:gutentags_debug)
    echom "Reloaded gutentags."
endif
let g:loaded_gutentags = 1

let g:gutentags_trace = get(g:, 'gutentags_trace', 0)
let g:gutentags_fake = get(g:, 'gutentags_fake', 0)
let g:gutentags_background_update = get(g:, 'gutentags_background_update', 1)
let g:gutentags_pause_after_update = get(g:, 'gutentags_pause_after_update', 0)
let g:gutentags_enabled = get(g:, 'gutentags_enabled', 1)
let g:gutentags_modules = get(g:, 'gutentags_modules', ['ctags'])

let g:gutentags_init_user_func = get(g:, 'gutentags_init_user_func', 
            \get(g:, 'gutentags_enabled_user_func', ''))

let g:gutentags_add_ctrlp_root_markers = get(g:, 'gutentags_add_ctrlp_root_markers', 1)
let g:gutentags_add_default_project_roots = get(g:, 'gutentags_add_default_project_roots', 1)
let g:gutentags_project_root = get(g:, 'gutentags_project_root', [])
if g:gutentags_add_default_project_roots
    let g:gutentags_project_root += ['.git', '.hg', '.svn', '.bzr', '_darcs', '_FOSSIL_', '.fslckout']
endif

let g:gutentags_project_root_finder = get(g:, 'gutentags_project_root_finder', '')

let g:gutentags_project_info = get(g:, 'gutentags_project_info', [])
call add(g:gutentags_project_info, {'type': 'python', 'file': 'setup.py'})
call add(g:gutentags_project_info, {'type': 'ruby', 'file': 'Gemfile'})

let g:gutentags_exclude_filetypes = get(g:, 'gutentags_exclude_filetypes', [])
let g:gutentags_exclude_project_root = get(g:, 'gutentags_exclude_project_root', ['/usr/local'])
let g:gutentags_resolve_symlinks = get(g:, 'gutentags_resolve_symlinks', 0)
let g:gutentags_generate_on_new = get(g:, 'gutentags_generate_on_new', 1)
let g:gutentags_generate_on_missing = get(g:, 'gutentags_generate_on_missing', 1)
let g:gutentags_generate_on_write = get(g:, 'gutentags_generate_on_write', 1)
let g:gutentags_generate_on_empty_buffer = get(g:, 'gutentags_generate_on_empty_buffer', 0)
let g:gutentags_file_list_command = get(g:, 'gutentags_file_list_command', '')

let g:gutentags_use_jobs = get(g:, 'gutentags_use_jobs', has('job'))

if !exists('g:gutentags_cache_dir')
    let g:gutentags_cache_dir = ''
elseif !empty(g:gutentags_cache_dir)
    " Make sure we get an absolute/resolved path (e.g. expanding `~/`), and
    " strip any trailing slash.
    let g:gutentags_cache_dir = fnamemodify(g:gutentags_cache_dir, ':p')
    let g:gutentags_cache_dir = fnamemodify(g:gutentags_cache_dir, ':s?[/\\]$??')
endif

let g:gutentags_define_advanced_commands = get(g:, 'gutentags_define_advanced_commands', 0)

if g:gutentags_cache_dir != '' && !isdirectory(g:gutentags_cache_dir)
    call mkdir(g:gutentags_cache_dir, 'p')
endif

if has('win32')
    let g:gutentags_plat_dir = expand('<sfile>:h:h:p') . "\\plat\\win32\\"
    let g:gutentags_res_dir = expand('<sfile>:h:h:p') . "\\res\\"
    let g:gutentags_script_ext = '.cmd'
else
    let g:gutentags_plat_dir = expand('<sfile>:h:h:p') . '/plat/unix/'
    let g:gutentags_res_dir = expand('<sfile>:h:h:p') . '/res/'
    let g:gutentags_script_ext = '.sh'
endif

let g:__gutentags_vim_is_leaving = 0

" }}}

" Gutentags Setup {{{

augroup gutentags_detect
    autocmd!
    autocmd BufNewFile,BufReadPost *  call gutentags#setup_gutentags()
    autocmd VimEnter               *  if expand('<amatch>')==''|call gutentags#setup_gutentags()|endif
    autocmd VimLeavePre            *  call gutentags#on_vim_leave_pre()
augroup end

" }}}

" Toggles and Miscellaneous Commands {{{

if g:gutentags_define_advanced_commands
    command! GutentagsToggleEnabled :let g:gutentags_enabled=!g:gutentags_enabled
    command! GutentagsToggleTrace   :call gutentags#toggletrace()
endif

if g:gutentags_debug
    command! GutentagsToggleFake    :call gutentags#fake()
endif

" }}}