dotfiles

Configuration for the software I use.
git clone https://git.jaderune.net/jbauer/dotfiles
Log | Files | Refs | README | LICENSE

commit 2c2b3e40291be356865c2fadf7b9ad21cac8dfdb
parent 82fa4aaee199e9f71850c99aa39046ca99bd4e01
Author: Jake Bauer <jbauer@paritybit.ca>
Date:   Sat, 20 May 2023 23:21:37 -0400

Remove gutentags

Diffstat:
M.config/nvim/init.vim | 4----
D.config/nvim/pack/bundle/start/vim-gutentags/LICENSE | 23-----------------------
D.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags.vim | 749-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/cscope.vim | 99-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/ctags.vim | 343-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/gtags_cscope.vim | 136-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/pycscope.vim | 86-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/doc/gutentags.txt | 748-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_gtags.sh | 48------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_pyscopedb.sh | 93-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_scopedb.sh | 124-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_tags.sh | 168-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/plat/win32/update_gtags.cmd | 56--------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/plat/win32/update_scopedb.cmd | 120-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/plat/win32/update_tags.cmd | 194-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/plugin/gutentags.vim | 120-------------------------------------------------------------------------------
D.config/nvim/pack/bundle/start/vim-gutentags/res/ctags_recursive.options | 2--
17 files changed, 0 insertions(+), 3113 deletions(-)

diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim @@ -1,7 +1,6 @@ "Plugins Used: " vim-commentary — (shortcuts for (un)commenting lines/blocks of code) " vim-buftabline — (show a tab line for buffers) -" vim-gutentags — (auto-generate tags) " vim-monochrome — (custom colorscheme) " vim-fastline — (custom status bar) " neoscroll.nvim — (smooth scrolling) @@ -14,9 +13,6 @@ filetype plugin indent on " Plugin Settings lua require('neoscroll').setup({easing_function = "quadratic"}) let g:buftabline_show = 1 -let g:gutentags_project_root = ['Makefile'] -let g:gutentags_add_default_project_roots = 1 -let g:gutentags_cache_dir = "~/.cache/nvim/" " Syntax Highlighting and Colourscheme syntax on diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/LICENSE b/.config/nvim/pack/bundle/start/vim-gutentags/LICENSE @@ -1,23 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Ludovic Chabant - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags.vim b/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags.vim @@ -1,749 +0,0 @@ -" gutentags.vim - Automatic ctags management for Vim - -" Utilities {{{ - -function! gutentags#chdir(path) - if has('nvim') - let chdir = haslocaldir() ? 'lcd' : haslocaldir(-1, 0) ? 'tcd' : 'cd' - else - let chdir = haslocaldir() ? ((haslocaldir() == 1) ? 'lcd' : 'tcd') : 'cd' - endif - execute chdir fnameescape(a:path) -endfunction - -" Throw an exception message. -function! gutentags#throw(message) - throw "gutentags: " . a:message -endfunction - -" Show an error message. -function! gutentags#error(message) - let v:errmsg = "gutentags: " . a:message - echoerr v:errmsg -endfunction - -" Show a warning message. -function! gutentags#warning(message) - echohl WarningMsg - echom "gutentags: " . a:message - echohl None -endfunction - -" Prints a message if debug tracing is enabled. -function! gutentags#trace(message, ...) - if g:gutentags_trace || (a:0 && a:1) - let l:message = "gutentags: " . a:message - echom l:message - endif -endfunction - -" Strips the ending slash in a path. -function! gutentags#stripslash(path) - return fnamemodify(a:path, ':s?[/\\]$??') -endfunction - -" Normalizes the slashes in a path. -function! gutentags#normalizepath(path) - if exists('+shellslash') && &shellslash - return substitute(a:path, '\v/', '\\', 'g') - elseif has('win32') - return substitute(a:path, '\v/', '\\', 'g') - else - return a:path - endif -endfunction - -" Shell-slashes the path (opposite of `normalizepath`). -function! gutentags#shellslash(path) - if exists('+shellslash') && !&shellslash - return substitute(a:path, '\v\\', '/', 'g') - else - return a:path - endif -endfunction - -" Gets a file path in the correct `plat` folder. -function! gutentags#get_plat_file(filename) abort - return g:gutentags_plat_dir . a:filename . g:gutentags_script_ext -endfunction - -" Gets a file path in the resource folder. -function! gutentags#get_res_file(filename) abort - return g:gutentags_res_dir . a:filename -endfunction - -" Generate a path for a given filename in the cache directory. -function! gutentags#get_cachefile(root_dir, filename) abort - if gutentags#is_path_rooted(a:filename) - return a:filename - endif - let l:tag_path = gutentags#stripslash(a:root_dir) . '/' . a:filename - if g:gutentags_cache_dir != "" - " Put the tag file in the cache dir instead of inside the - " project root. - let l:tag_path = g:gutentags_cache_dir . '/' . - \tr(l:tag_path, '\/: ', '---_') - let l:tag_path = substitute(l:tag_path, '/\-', '/', '') - let l:tag_path = substitute(l:tag_path, '[\-_]*$', '', '') - endif - let l:tag_path = gutentags#normalizepath(l:tag_path) - return l:tag_path -endfunction - -" Makes sure a given command starts with an executable that's in the PATH. -function! gutentags#validate_cmd(cmd) abort - if !empty(a:cmd) && executable(split(a:cmd)[0]) - return a:cmd - endif - return "" -endfunction - -" Makes an appropriate command line for use with `job_start` by converting -" a list of possibly quoted arguments into a single string on Windows, or -" into a list of unquoted arguments on Unix/Mac. -if has('win32') || has('win64') - function! gutentags#make_args(cmd) abort - if &shell == 'pwsh' || &shell == 'powershell' - return '& ' . join(a:cmd, ' ') - else - return join(a:cmd, ' ') - endif - endfunction -else - function! gutentags#make_args(cmd) abort - let l:outcmd = [] - for cmdarg in a:cmd - " Thanks Vimscript... you can use negative integers for strings - " in the slice notation, but not for indexing characters :( - let l:arglen = strlen(cmdarg) - if (cmdarg[0] == '"' && cmdarg[l:arglen - 1] == '"') || - \(cmdarg[0] == "'" && cmdarg[l:arglen - 1] == "'") - " This was quoted, so there are probably things to escape. - let l:escapedarg = cmdarg[1:-2] " substitute(cmdarg[1:-2], '\ ', '\\ ', 'g') - call add(l:outcmd, l:escapedarg) - else - call add(l:outcmd, cmdarg) - endif - endfor - return l:outcmd - endfunction -endif - -" Returns whether a path is rooted. -if has('win32') || has('win64') - function! gutentags#is_path_rooted(path) abort - return len(a:path) >= 2 && ( - \a:path[0] == '/' || a:path[0] == '\' || a:path[1] == ':') - endfunction -else - function! gutentags#is_path_rooted(path) abort - return !empty(a:path) && a:path[0] == '/' - endfunction -endif - -" }}} - -" Gutentags Setup {{{ - -let s:known_files = [] -let s:known_projects = {} - -function! s:cache_project_root(path) abort - let l:result = {} - - for proj_info in g:gutentags_project_info - let l:filematch = get(proj_info, 'file', '') - if l:filematch != '' && filereadable(a:path . '/'. l:filematch) - let l:result = copy(proj_info) - break - endif - - let l:globmatch = get(proj_info, 'glob', '') - if l:globmatch != '' && glob(a:path . '/' . l:globmatch) != '' - let l:result = copy(proj_info) - break - endif - endfor - - let s:known_projects[a:path] = l:result -endfunction - -function! gutentags#get_project_file_list_cmd(path) abort - if type(g:gutentags_file_list_command) == type("") - return gutentags#validate_cmd(g:gutentags_file_list_command) - elseif type(g:gutentags_file_list_command) == type({}) - let l:markers = get(g:gutentags_file_list_command, 'markers', []) - if type(l:markers) == type({}) - for [marker, file_list_cmd] in items(l:markers) - if !empty(globpath(a:path, marker, 1)) - return gutentags#validate_cmd(file_list_cmd) - endif - endfor - endif - return get(g:gutentags_file_list_command, 'default', "") - endif - return "" -endfunction - -" Finds the first directory with a project marker by walking up from the given -" file path. -function! gutentags#get_project_root(path) abort - if g:gutentags_project_root_finder != '' - return call(g:gutentags_project_root_finder, [a:path]) - endif - return gutentags#default_get_project_root(a:path) -endfunction - -" Default implementation for finding project markers... useful when a custom -" finder (`g:gutentags_project_root_finder`) wants to fallback to the default -" behaviour. -function! gutentags#default_get_project_root(path) abort - let l:path = gutentags#stripslash(a:path) - let l:previous_path = "" - let l:markers = g:gutentags_project_root[:] - if g:gutentags_add_ctrlp_root_markers && exists('g:ctrlp_root_markers') - for crm in g:ctrlp_root_markers - if index(l:markers, crm) < 0 - call add(l:markers, crm) - endif - endfor - endif - while l:path != l:previous_path - for root in l:markers - if !empty(globpath(l:path, root, 1)) - let l:proj_dir = simplify(fnamemodify(l:path, ':p')) - let l:proj_dir = gutentags#stripslash(l:proj_dir) - if l:proj_dir == '' - call gutentags#trace("Found project marker '" . root . - \"' at the root of your file-system! " . - \" That's probably wrong, disabling " . - \"gutentags for this file...", - \1) - call gutentags#throw("Marker found at root, aborting.") - endif - for ign in g:gutentags_exclude_project_root - if l:proj_dir == ign - call gutentags#trace( - \"Ignoring project root '" . l:proj_dir . - \"' because it is in the list of ignored" . - \" projects.") - call gutentags#throw("Ignore project: " . l:proj_dir) - endif - endfor - return l:proj_dir - endif - endfor - let l:previous_path = l:path - let l:path = fnamemodify(l:path, ':h') - endwhile - call gutentags#throw("Can't figure out what tag file to use for: " . a:path) -endfunction - -" Get info on the project we're inside of. -function! gutentags#get_project_info(path) abort - return get(s:known_projects, a:path, {}) -endfunction - -" Setup gutentags for the current buffer. -function! gutentags#setup_gutentags() abort - if exists('b:gutentags_files') && !g:gutentags_debug - " This buffer already has gutentags support. - return - endif - - " Don't setup gutentags for anything that's not a normal buffer - " (so don't do anything for help buffers and quickfix windows and - " other such things) - " Also don't do anything for the default `[No Name]` buffer you get - " after starting Vim. - if &buftype != '' || - \(bufname('%') == '' && !g:gutentags_generate_on_empty_buffer) - return - endif - - " Don't setup gutentags for things that don't need it, or that could - " cause problems. - if index(g:gutentags_exclude_filetypes, &filetype) >= 0 - return - endif - - " Let the user specify custom ways to disable Gutentags. - if g:gutentags_init_user_func != '' && - \!call(g:gutentags_init_user_func, [expand('%:p')]) - call gutentags#trace("Ignoring '" . bufname('%') . "' because of " . - \"custom user function.") - return - endif - - " Try and find what tags file we should manage. - call gutentags#trace("Scanning buffer '" . bufname('%') . "' for gutentags setup...") - try - let l:buf_dir = expand('%:p:h', 1) - if g:gutentags_resolve_symlinks - let l:buf_dir = fnamemodify(resolve(expand('%:p', 1)), ':p:h') - endif - if !exists('b:gutentags_root') - let b:gutentags_root = gutentags#get_project_root(l:buf_dir) - endif - if !len(b:gutentags_root) - call gutentags#trace("no valid project root.. no gutentags support.") - return - endif - if filereadable(b:gutentags_root . '/.notags') - call gutentags#trace("'.notags' file found... no gutentags support.") - return - endif - - if !has_key(s:known_projects, b:gutentags_root) - call s:cache_project_root(b:gutentags_root) - endif - if g:gutentags_trace - let l:projnfo = gutentags#get_project_info(b:gutentags_root) - if l:projnfo != {} - call gutentags#trace("Setting project type to ".l:projnfo['type']) - else - call gutentags#trace("No specific project type.") - endif - endif - - let b:gutentags_files = {} - for module in g:gutentags_modules - call call("gutentags#".module."#init", [b:gutentags_root]) - endfor - catch /^gutentags\:/ - call gutentags#trace("No gutentags support for this buffer.") - return - endtry - - " We know what tags file to manage! Now set things up. - call gutentags#trace("Setting gutentags for buffer '".bufname('%')."'") - - " Autocommands for updating the tags on save. - " We need to pass the buffer number to the callback function in the rare - " case that the current buffer is changed by another `BufWritePost` - " callback. This will let us get that buffer's variables without causing - " errors. - let l:bn = bufnr('%') - execute 'augroup gutentags_buffer_' . l:bn - execute ' autocmd!' - execute ' autocmd BufWritePost <buffer=' . l:bn . '> call s:write_triggered_update_tags(' . l:bn . ')' - execute 'augroup end' - - " Miscellaneous commands. - command! -buffer -bang GutentagsUpdate :call s:manual_update_tags(<bang>0) - - " Add these tags files to the known tags files. - for module in keys(b:gutentags_files) - let l:tagfile = b:gutentags_files[module] - let l:found = index(s:known_files, l:tagfile) - if l:found < 0 - call add(s:known_files, l:tagfile) - - " Generate this new file depending on settings and stuff. - if g:gutentags_enabled - if g:gutentags_generate_on_missing && !filereadable(l:tagfile) - call gutentags#trace("Generating missing tags file: " . l:tagfile) - call s:update_tags(l:bn, module, 1, 1) - elseif g:gutentags_generate_on_new - call gutentags#trace("Generating tags file: " . l:tagfile) - call s:update_tags(l:bn, module, 1, 1) - endif - endif - endif - endfor -endfunction - -" Set a variable on exit so that we don't complain when a job gets killed. -function! gutentags#on_vim_leave_pre() abort - let g:__gutentags_vim_is_leaving = 1 -endfunction - -function! gutentags#on_vim_leave() abort - if has('win32') && !has('nvim') - " Vim8 doesn't seem to be killing child processes soon enough for - " us to clean things up inside this plugin, so do it ourselves. - " TODO: test other platforms and other vims - for module in g:gutentags_modules - for upd_info in s:update_in_progress[module] - let l:job = upd_info[1] - call job_stop(l:job, "term") - let l:status = job_status(l:job) - if l:status == "run" - call job_stop(l:job, "kill") - endif - endfor - endfor - endif -endfunction - -" }}} - -" Job Management {{{ - -" List of queued-up jobs, and in-progress jobs, per module. -let s:update_queue = {} -let s:update_in_progress = {} -for module in g:gutentags_modules - let s:update_queue[module] = [] - let s:update_in_progress[module] = [] -endfor - -" Adds a started job to the list of ongoing updates. -" Must pass the tags file being created/updated, and the job data as -" returned by the gutentags#start_job function -function! gutentags#add_job(module, tags_file, data) abort - call add(s:update_in_progress[a:module], [a:tags_file, a:data]) -endfunction - -" Finds an ongoing job by tags file -function! gutentags#find_job_index_by_tags_file(module, tags_file) abort - let l:idx = -1 - for upd_info in s:update_in_progress[a:module] - let l:idx += 1 - if upd_info[0] == a:tags_file - return l:idx - endif - endfor - return -1 -endfunction - -" Finds an ongoing job by job data -function! gutentags#find_job_index_by_data(module, data) abort - let l:idx = -1 - for upd_info in s:update_in_progress[a:module] - let l:idx += 1 - if upd_info[1] == a:data - return l:idx - endif - endfor - return -1 -endfunction - -" Gets the tags file of a given job -function! gutentags#get_job_tags_file(module, job_idx) abort - return s:update_in_progress[a:module][a:job_idx][0] -endfunction - -" Gets the job data of the i-th job -function! gutentags#get_job_data(module, job_idx) abort - return s:update_in_progress[a:module][a:job_idx][1] -endfunction - -" Removes the i-th job from the ongoing jobs -function! gutentags#remove_job(module, job_idx) abort - let [l:tags_file, l:job_data] = s:update_in_progress[a:module][a:job_idx] - call remove(s:update_in_progress[a:module], a:job_idx) - - " Run the user callback for finished jobs. - silent doautocmd User GutentagsUpdated - - " See if we had any more updates queued up for this. - let l:qu_idx = -1 - for qu_info in s:update_queue[a:module] - let l:qu_idx += 1 - if qu_info[0] == l:tags_file - break - endif - endfor - if l:qu_idx >= 0 - let l:qu_info = s:update_queue[a:module][l:qu_idx] - call remove(s:update_queue[a:module], l:qu_idx) - - if bufexists(l:qu_info[1]) - call gutentags#trace("Finished ".a:module." job, ". - \"running queued update for '".l:tags_file."'.") - call s:update_tags(l:qu_info[1], a:module, l:qu_info[2], 2) - else - call gutentags#trace("Finished ".a:module." job, ". - \"but skipping queued update for '".l:tags_file."' ". - \"because originating buffer doesn't exist anymore.") - endif - else - call gutentags#trace("Finished ".a:module." job.") - endif - - return [l:tags_file, l:job_data] -endfunction - -" Removes the job from the ongoing jobs given its job data -function! gutentags#remove_job_by_data(module, data) abort - let l:idx = gutentags#find_job_index_by_data(a:module, a:data) - return gutentags#remove_job(a:module, l:idx) -endfunction - -" }}} - -" Tags File Management {{{ - -" (Re)Generate the tags file for the current buffer's file. -function! s:manual_update_tags(bang) abort - let l:restore_prev_trace = 0 - let l:prev_trace = g:gutentags_trace - if &verbose > 0 - let g:gutentags_trace = 1 - let l:restore_prev_trace = 1 - endif - - try - let l:bn = bufnr('%') - for module in g:gutentags_modules - call s:update_tags(l:bn, module, a:bang, 0) - endfor - silent doautocmd User GutentagsUpdating - finally - if l:restore_prev_trace - let g:gutentags_trace = l:prev_trace - endif - endtry -endfunction - -" (Re)Generate the tags file for a buffer that just go saved. -function! s:write_triggered_update_tags(bufno) abort - if g:gutentags_enabled && g:gutentags_generate_on_write - for module in g:gutentags_modules - call s:update_tags(a:bufno, module, 0, 2) - endfor - endif - silent doautocmd User GutentagsUpdating -endfunction - -" Update the tags file for the current buffer's file. -" write_mode: -" 0: update the tags file if it exists, generate it otherwise. -" 1: always generate (overwrite) the tags file. -" -" queue_mode: -" 0: if an update is already in progress, report it and abort. -" 1: if an update is already in progress, abort silently. -" 2: if an update is already in progress, queue another one. -function! s:update_tags(bufno, module, write_mode, queue_mode) abort - " Figure out where to save. - let l:buf_gutentags_files = getbufvar(a:bufno, 'gutentags_files') - let l:tags_file = l:buf_gutentags_files[a:module] - let l:proj_dir = getbufvar(a:bufno, 'gutentags_root') - - " Check that there's not already an update in progress. - let l:in_progress_idx = gutentags#find_job_index_by_tags_file( - \a:module, l:tags_file) - if l:in_progress_idx >= 0 - if a:queue_mode == 2 - let l:needs_queuing = 1 - for qu_info in s:update_queue[a:module] - if qu_info[0] == l:tags_file - let l:needs_queuing = 0 - break - endif - endfor - if l:needs_queuing - call add(s:update_queue[a:module], - \[l:tags_file, a:bufno, a:write_mode]) - endif - call gutentags#trace("Tag file '" . l:tags_file . - \"' is already being updated. Queuing it up...") - elseif a:queue_mode == 1 - call gutentags#trace("Tag file '" . l:tags_file . - \"' is already being updated. Skipping...") - elseif a:queue_mode == 0 - echom "gutentags: The tags file is already being updated, " . - \"please try again later." - else - call gutentags#throw("Unknown queue mode: " . a:queue_mode) - endif - - " Don't update the tags right now. - return - endif - - " Switch to the project root to make the command line smaller, and make - " it possible to get the relative path of the filename to parse if we're - " doing an incremental update. - let l:prev_cwd = getcwd() - call gutentags#chdir(l:proj_dir) - try - call call("gutentags#".a:module."#generate", - \[l:proj_dir, l:tags_file, - \ { - \ 'write_mode': a:write_mode, - \ }]) - catch /^gutentags\:/ - echom "Error while generating ".a:module." file:" - echom v:exception - finally - " Restore the current directory... - call gutentags#chdir(l:prev_cwd) - endtry -endfunction - -" }}} - -" Utility Functions {{{ - -function! gutentags#rescan(...) - if exists('b:gutentags_files') - unlet b:gutentags_files - endif - if a:0 && a:1 - let l:trace_backup = g:gutentags_trace - let l:gutentags_trace = 1 - endif - call gutentags#setup_gutentags() - if a:0 && a:1 - let g:gutentags_trace = l:trace_backup - endif -endfunction - -function! gutentags#toggletrace(...) - let g:gutentags_trace = !g:gutentags_trace - if a:0 > 0 - let g:gutentags_trace = a:1 - endif - if g:gutentags_trace - echom "gutentags: Tracing is enabled." - else - echom "gutentags: Tracing is disabled." - endif - echom "" -endfunction - -function! gutentags#fake(...) - let g:gutentags_fake = !g:gutentags_fake - if a:0 > 0 - let g:gutentags_fake = a:1 - endif - if g:gutentags_fake - echom "gutentags: Now faking gutentags." - else - echom "gutentags: Now running gutentags for real." - endif - echom "" -endfunction - -function! gutentags#default_stdout_cb(chan, msg) abort - call gutentags#trace('[job stdout]: '.string(a:msg)) -endfunction - -function! gutentags#default_stderr_cb(chan, msg) abort - call gutentags#trace('[job stderr]: '.string(a:msg)) -endfunction - -if has('nvim') - " Neovim job API. - function! s:nvim_job_exit_wrapper(real_cb, job, exit_code, event_type) abort - call call(a:real_cb, [a:job, a:exit_code]) - endfunction - - function! s:nvim_job_out_wrapper(real_cb, job, lines, event_type) abort - call call(a:real_cb, [a:job, a:lines]) - endfunction - - function! gutentags#build_default_job_options(module) abort - " Neovim kills jobs on exit, which is what we want. - let l:job_opts = { - \'on_exit': function( - \ '<SID>nvim_job_exit_wrapper', - \ ['gutentags#'.a:module.'#on_job_exit']), - \'on_stdout': function( - \ '<SID>nvim_job_out_wrapper', - \ ['gutentags#default_stdout_cb']), - \'on_stderr': function( - \ '<SID>nvim_job_out_wrapper', - \ ['gutentags#default_stderr_cb']) - \} - return l:job_opts - endfunction - - function! gutentags#start_job(cmd, opts) abort - return jobstart(a:cmd, a:opts) - endfunction -else - " Vim8 job API. - function! gutentags#build_default_job_options(module) abort - let l:job_opts = { - \'exit_cb': 'gutentags#'.a:module.'#on_job_exit', - \'out_cb': 'gutentags#default_stdout_cb', - \'err_cb': 'gutentags#default_stderr_cb', - \'stoponexit': 'term' - \} - return l:job_opts - endfunction - - function! gutentags#start_job(cmd, opts) abort - return job_start(a:cmd, a:opts) - endfunction -endif - -" Returns which modules are currently generating something for the -" current buffer. -function! gutentags#inprogress() - " Does this buffer have gutentags enabled? - if !exists('b:gutentags_files') - return [] - endif - - " Find any module that has a job in progress for any of this buffer's - " tags files. - let l:modules_in_progress = [] - for [module, tags_file] in items(b:gutentags_files) - let l:jobidx = gutentags#find_job_index_by_tags_file(module, tags_file) - if l:jobidx >= 0 - call add(l:modules_in_progress, module) - endif - endfor - return l:modules_in_progress -endfunction - -" }}} - -" Statusline Functions {{{ - -" Prints whether a tag file is being generated right now for the current -" buffer in the status line. -" -" Arguments can be passed: -" - args 1 and 2 are the prefix and suffix, respectively, of whatever output, -" if any, is going to be produced. -" (defaults to empty strings) -" - arg 3 is the text to be shown if tags are currently being generated. -" (defaults to the name(s) of the modules currently generating). - -function! gutentags#statusline(...) abort - let l:modules_in_progress = gutentags#inprogress() - if empty(l:modules_in_progress) - return '' - endif - - let l:prefix = '' - let l:suffix = '' - if a:0 > 0 - let l:prefix = a:1 - endif - if a:0 > 1 - let l:suffix = a:2 - endif - - if a:0 > 2 - let l:genmsg = a:3 - else - let l:genmsg = join(l:modules_in_progress, ',') - endif - - return l:prefix.l:genmsg.l:suffix -endfunction - -" Same as `gutentags#statusline`, but the only parameter is a `Funcref` or -" function name that will get passed the list of modules currently generating -" something. This formatter function should return the string to display in -" the status line. - -function! gutentags#statusline_cb(fmt_cb, ...) abort - let l:modules_in_progress = gutentags#inprogress() - - if (a:0 == 0 || !a:1) && empty(l:modules_in_progress) - return '' - endif - - return call(a:fmt_cb, [l:modules_in_progress]) -endfunction - -" }}} - diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/cscope.vim b/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/cscope.vim @@ -1,99 +0,0 @@ -" 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 - -if !exists('g:gutentags_cscope_build_inverted_index') - let g:gutentags_cscope_build_inverted_index = 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#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) - silent! execute 'cs add ' . fnameescape(l:dbfile_path) - endif - endif -endfunction - -function! gutentags#cscope#generate(proj_dir, tags_file, gen_opts) abort - let l: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: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 - 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') - let l:job = gutentags#start_job(l:cmd, l:job_opts) - call gutentags#add_job('cscope', a:tags_file, l:job) - else - call gutentags#trace("(fake... not actually running)") - endif -endfunction - -function! gutentags#cscope#on_job_exit(job, exit_val) abort - let l:job_idx = gutentags#find_job_index_by_data('cscope', a:job) - let l:dbfile_path = gutentags#get_job_tags_file('cscope', l:job_idx) - call gutentags#remove_job('cscope', l:job_idx) - - if a:exit_val == 0 - if index(s:added_dbs, l:dbfile_path) < 0 - call add(s:added_dbs, l:dbfile_path) - silent! execute 'cs add ' . fnameescape(l:dbfile_path) - else - silent! execute 'cs reset' - endif - elseif !g:__gutentags_vim_is_leaving - call gutentags#warning( - \"cscope job failed, returned: ". - \string(a:exit_val)) - endif - if has('win32') && g:__gutentags_vim_is_leaving - " The process got interrupted because Vim is quitting. - " Remove the db file on Windows because there's no `trap` - " statement in the update script. - try | call delete(l:dbfile_path) | endtry - endif -endfunction - -" }}} - diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/ctags.vim b/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/ctags.vim @@ -1,343 +0,0 @@ -" Ctags module for Gutentags - -" Global Options {{{ - -let g:gutentags_ctags_executable = get(g:, 'gutentags_ctags_executable', 'ctags') -let g:gutentags_ctags_tagfile = get(g:, 'gutentags_ctags_tagfile', 'tags') -let g:gutentags_ctags_auto_set_tags = get(g:, 'gutentags_ctags_auto_set_tags', 1) - -let g:gutentags_ctags_options_file = get(g:, 'gutentags_ctags_options_file', '.gutctags') -let g:gutentags_ctags_check_tagfile = get(g:, 'gutentags_ctags_check_tagfile', 0) -let g:gutentags_ctags_extra_args = get(g:, 'gutentags_ctags_extra_args', []) -let g:gutentags_ctags_post_process_cmd = get(g:, 'gutentags_ctags_post_process_cmd', '') - -let g:gutentags_ctags_exclude = get(g:, 'gutentags_ctags_exclude', []) -let g:gutentags_ctags_exclude_wildignore = get(g:, 'gutentags_ctags_exclude_wildignore', 1) - -" Backwards compatibility. -function! s:_handleOldOptions() abort - let l:renamed_options = { - \'gutentags_exclude': 'gutentags_ctags_exclude', - \'gutentags_tagfile': 'gutentags_ctags_tagfile', - \'gutentags_auto_set_tags': 'gutentags_ctags_auto_set_tags' - \} - for key in keys(l:renamed_options) - if exists('g:'.key) - let newname = l:renamed_options[key] - echom "gutentags: Option 'g:'".key." has been renamed to ". - \"'g:'".newname." Please update your vimrc." - let g:[newname] = g:[key] - endif - endfor -endfunction -call s:_handleOldOptions() -" }}} - -" Gutentags Module Interface {{{ - -let s:did_check_exe = 0 -let s:runner_exe = '"' . gutentags#get_plat_file('update_tags') . '"' -let s:unix_redir = (&shellredir =~# '%s') ? &shellredir : &shellredir . ' %s' -let s:wildignores_options_path = '' -let s:last_wildignores = '' - -function! gutentags#ctags#init(project_root) abort - " Figure out the path to the tags file. - " Check the old name for this option, too, before falling back to the - " globally defined name. - let l:tagfile = getbufvar("", 'gutentags_ctags_tagfile', - \getbufvar("", 'gutentags_tagfile', - \g:gutentags_ctags_tagfile)) - let b:gutentags_files['ctags'] = gutentags#get_cachefile( - \a:project_root, l:tagfile) - - " Set the tags file for Vim to use. - if g:gutentags_ctags_auto_set_tags - if has('win32') || has('win64') - execute 'setlocal tags^=' . fnameescape(b:gutentags_files['ctags']) - else - " spaces must be literally escaped in tags path - let l:literal_space_escaped = substitute(fnameescape(b:gutentags_files['ctags']), '\ ', '\\\\ ', 'g') - execute 'setlocal tags^=' . l:literal_space_escaped - endif - endif - - " Check if the ctags executable exists. - if s:did_check_exe == 0 - if g:gutentags_enabled && executable(expand(g:gutentags_ctags_executable, 1)) == 0 - let g:gutentags_enabled = 0 - echoerr "Executable '".g:gutentags_ctags_executable."' can't be found. " - \."Gutentags will be disabled. You can re-enable it by " - \."setting g:gutentags_enabled back to 1." - endif - let s:did_check_exe = 1 - endif -endfunction - -function! gutentags#ctags#generate(proj_dir, tags_file, gen_opts) abort - let l:write_mode = a:gen_opts['write_mode'] - - let l:tags_file_exists = filereadable(a:tags_file) - - " If the tags file exists, we may want to do a sanity check to prevent - " weird errors that are hard to troubleshoot. - if l:tags_file_exists && g:gutentags_ctags_check_tagfile - let l:first_lines = readfile(a:tags_file, '', 1) - if len(l:first_lines) == 0 || stridx(l:first_lines[0], '!_TAG_') != 0 - call gutentags#throw( - \"File ".a:tags_file." doesn't appear to be ". - \"a ctags file. Please delete it and run ". - \":GutentagsUpdate!.") - return - endif - endif - - " Get a tags file path relative to the current directory, which - " happens to be the project root in this case. - " Since the given tags file path is absolute, and since Vim won't - " change the path if it is not inside the current directory, we - " know that the tags file is "local" (i.e. inside the project) - " if the path was shortened (an absolute path will always be - " longer than a true relative path). - let l:tags_file_relative = fnamemodify(a:tags_file, ':.') - let l:tags_file_is_local = len(l:tags_file_relative) < len(a:tags_file) - let l:use_tag_relative_opt = 0 - - if empty(g:gutentags_cache_dir) && l:tags_file_is_local - " If we don't use the cache directory, we can pass relative paths - " around. - " - " Note that if we don't do this and pass a full path for the project - " root, some `ctags` implementations like Exhuberant Ctags can get - " confused if the paths have spaces -- but not if you're *in* the root - " directory, for some reason... (which will be the case, we're running - " the jobs from the project root). - let l:actual_proj_dir = '.' - let l:actual_tags_file = l:tags_file_relative - - let l:tags_file_dir = fnamemodify(l:actual_tags_file, ':h') - if l:tags_file_dir != '.' - " Ok so now the tags file is stored in a subdirectory of the - " project root, instead of at the root. This happens if, say, - " someone set `gutentags_ctags_tagfile` to `.git/tags`, which - " seems to be fairly popular. - " - " By default, `ctags` writes paths relative to the current - " directory (the project root) but in this case we need it to - " be relative to the tags file (e.g. adding `../` in front of - " everything if the tags file is `.git/tags`). - " - " Thankfully most `ctags` implementations support an option - " just for this. - let l:use_tag_relative_opt = 1 - endif - else - " else: the tags file goes in a cache directory, so we need to specify - " all the paths absolutely for `ctags` to do its job correctly. - let l:actual_proj_dir = a:proj_dir - let l:actual_tags_file = a:tags_file - endif - - " Build the command line. - let l:cmd = [s:runner_exe] - let l:cmd += ['-e', '"' . s:get_ctags_executable(a:proj_dir) . '"'] - let l:cmd += ['-t', '"' . l:actual_tags_file . '"'] - let l:cmd += ['-p', '"' . l:actual_proj_dir . '"'] - if l:write_mode == 0 && l:tags_file_exists - let l:cur_file_path = expand('%:p') - if empty(g:gutentags_cache_dir) && l:tags_file_is_local - let l:cur_file_path = fnamemodify(l:cur_file_path, ':.') - endif - let l:cmd += ['-s', '"' . l:cur_file_path . '"'] - else - let l:file_list_cmd = gutentags#get_project_file_list_cmd(l:actual_proj_dir) - if !empty(l:file_list_cmd) - if match(l:file_list_cmd, '///') > 0 - let l:suffopts = split(l:file_list_cmd, '///') - let l:suffoptstr = l:suffopts[1] - let l:file_list_cmd = l:suffopts[0] - if l:suffoptstr == 'absolute' - let l:cmd += ['-A'] - endif - endif - let l:cmd += ['-L', '"' . l:file_list_cmd. '"'] - endif - endif - if empty(get(l:, 'file_list_cmd', '')) - " Pass the Gutentags recursive options file before the project - " options file, so that users can override --recursive. - " Omit --recursive if this project uses a file list command. - let l:cmd += ['-o', '"' . gutentags#get_res_file('ctags_recursive.options') . '"'] - endif - if l:use_tag_relative_opt - let l:cmd += ['-O', shellescape("--tag-relative=yes")] - endif - for extra_arg in g:gutentags_ctags_extra_args - let l:cmd += ['-O', shellescape(extra_arg)] - endfor - if !empty(g:gutentags_ctags_post_process_cmd) - let l:cmd += ['-P', shellescape(g:gutentags_ctags_post_process_cmd)] - endif - let l:proj_options_file = a:proj_dir . '/' . - \g:gutentags_ctags_options_file - if filereadable(l:proj_options_file) - let l:proj_options_file = s:process_options_file( - \a:proj_dir, l:proj_options_file) - let l:cmd += ['-o', '"' . l:proj_options_file . '"'] - endif - if g:gutentags_ctags_exclude_wildignore - call s:generate_wildignore_options() - if !empty(s:wildignores_options_path) - let l:cmd += ['-x', shellescape('@'.s:wildignores_options_path, 1)] - endif - endif - for exc in g:gutentags_ctags_exclude - let l:cmd += ['-x', '"' . exc . '"'] - endfor - if g:gutentags_pause_after_update - let l:cmd += ['-c'] - endif - if g:gutentags_trace - let l:cmd += ['-l', '"' . l:actual_tags_file . '.log"'] - 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('ctags') - let l:job = gutentags#start_job(l:cmd, l:job_opts) - call gutentags#add_job('ctags', a:tags_file, l:job) - else - call gutentags#trace("(fake... not actually running)") - endif -endfunction - -function! gutentags#ctags#on_job_exit(job, exit_val) abort - let [l:tags_file, l:job_data] = gutentags#remove_job_by_data('ctags', a:job) - - if a:exit_val != 0 && !g:__gutentags_vim_is_leaving - call gutentags#warning("ctags job failed, returned: ". - \string(a:exit_val)) - endif - if has('win32') && g:__gutentags_vim_is_leaving - " The process got interrupted because Vim is quitting. - " Remove the tags and lock files on Windows because there's no `trap` - " statement in update script. - try | call delete(l:tags_file) | endtry - try | call delete(l:tags_file.'.temp') | endtry - try | call delete(l:tags_file.'.lock') | endtry - endif -endfunction - -" }}} - -" Utilities {{{ - -" Get final ctags executable depending whether a filetype one is defined -function! s:get_ctags_executable(proj_dir) abort - "Only consider the main filetype in cases like 'python.django' - let l:ftype = get(split(&filetype, '\.'), 0, '') - let l:proj_info = gutentags#get_project_info(a:proj_dir) - let l:type = get(l:proj_info, 'type', l:ftype) - let exepath = exists('g:gutentags_ctags_executable_{l:type}') - \ ? g:gutentags_ctags_executable_{l:type} : g:gutentags_ctags_executable - return expand(exepath, 1) -endfunction - -function! s:generate_wildignore_options() abort - if s:last_wildignores == &wildignore - " The 'wildignore' setting didn't change since last time we did this, - " but check if file still exist (could have been deleted if temp file) - if filereadable(s:wildignores_options_path) - call gutentags#trace("Wildignore options file is up to date.") - return - endif - call gutentags#trace("Wildignore options file is not readable.") - endif - - if s:wildignores_options_path == '' - if empty(g:gutentags_cache_dir) - let s:wildignores_options_path = tempname() - else - let s:wildignores_options_path = - \gutentags#stripslash(g:gutentags_cache_dir). - \'/_wildignore.options' - endif - endif - - call gutentags#trace("Generating wildignore options: ".s:wildignores_options_path) - let l:opt_lines = [] - for ign in split(&wildignore, ',') - call add(l:opt_lines, ign) - endfor - call writefile(l:opt_lines, s:wildignores_options_path) - let s:last_wildignores = &wildignore -endfunction - -function! s:process_options_file(proj_dir, path) abort - if empty(g:gutentags_cache_dir) - " If we're not using a cache directory to store tag files, we can - " use the options file straight away. - return a:path - endif - - " See if we need to process the options file. - let l:do_process = 0 - let l:proj_dir = gutentags#stripslash(a:proj_dir) - let l:out_path = gutentags#get_cachefile(l:proj_dir, 'options') - if !filereadable(l:out_path) - call gutentags#trace("Processing options file '".a:path."' because ". - \"it hasn't been processed yet.") - let l:do_process = 1 - elseif getftime(a:path) > getftime(l:out_path) - call gutentags#trace("Processing options file '".a:path."' because ". - \"it has changed.") - let l:do_process = 1 - endif - if l:do_process == 0 - " Nothing's changed, return the existing processed version of the - " options file. - return l:out_path - endif - - " We have to process the options file. Right now this only means capturing - " all the 'exclude' rules, and rewrite them to make them absolute. - " - " This is because since `ctags` is run with absolute paths (because we - " want the tag file to be in a cache directory), it will do its path - " matching with absolute paths too, so the exclude rules need to be - " absolute. - let l:lines = readfile(a:path) - let l:outlines = [] - for line in l:lines - let l:exarg_idx = matchend(line, '\v^\-\-exclude=') - if l:exarg_idx < 0 - call add(l:outlines, line) - continue - endif - - " Don't convert things that don't look like paths. - let l:exarg = strpart(line, l:exarg_idx + 1) - let l:do_convert = 1 - if l:exarg[0] == '@' " Manifest file path - let l:do_convert = 0 - endif - if stridx(l:exarg, '/') < 0 && stridx(l:exarg, '\\') < 0 " Filename - let l:do_convert = 0 - endif - if l:do_convert == 0 - call add(l:outlines, line) - continue - endif - - let l:fullp = l:proj_dir . gutentags#normalizepath('/'.l:exarg) - let l:ol = '--exclude='.l:fullp - call add(l:outlines, l:ol) - endfor - - call writefile(l:outlines, l:out_path) - return l:out_path -endfunction - -" }}} diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/gtags_cscope.vim b/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/gtags_cscope.vim @@ -1,136 +0,0 @@ -" gtags_cscope module for Gutentags - -if !has('cscope') - throw "Can't enable the gtags-cscope module for Gutentags, " - \"this Vim has no support for cscope files." -endif - -" Global Options {{{ - -if !exists('g:gutentags_gtags_executable') - let g:gutentags_gtags_executable = 'gtags' -endif - -if !exists('g:gutentags_gtags_dbpath') - let g:gutentags_gtags_dbpath = '' -endif - -if !exists('g:gutentags_gtags_options_file') - let g:gutentags_gtags_options_file = '.gutgtags' -endif - -if !exists('g:gutentags_gtags_cscope_executable') - let g:gutentags_gtags_cscope_executable = 'gtags-cscope' -endif - -if !exists('g:gutentags_auto_add_gtags_cscope') - let g:gutentags_auto_add_gtags_cscope = 1 -endif - -" }}} - -" Gutentags Module Interface {{{ - -let s:runner_exe = gutentags#get_plat_file('update_gtags') -let s:added_db_files = {} - -function! s:add_db(db_file) abort - if filereadable(a:db_file) - call gutentags#trace( - \"Adding cscope DB file: " . a:db_file) - set nocscopeverbose - execute 'cs add ' . fnameescape(a:db_file) - set cscopeverbose - let s:added_db_files[a:db_file] = 1 - else - call gutentags#trace( - \"Not adding cscope DB file because it doesn't " . - \"exist yet: " . a:db_file) - endif -endfunction - -function! gutentags#gtags_cscope#init(project_root) abort - let l:db_path = gutentags#get_cachefile( - \a:project_root, g:gutentags_gtags_dbpath) - let l:db_path = gutentags#stripslash(l:db_path) - let l:db_file = l:db_path . '/GTAGS' - let l:db_file = gutentags#normalizepath(l:db_file) - - if !isdirectory(l:db_path) - call mkdir(l:db_path, 'p') - endif - - let b:gutentags_files['gtags_cscope'] = l:db_file - - execute 'set cscopeprg=' . fnameescape(g:gutentags_gtags_cscope_executable) - - " The combination of gtags-cscope, vim's cscope and global files is - " a bit flaky. Environment variables are safer than vim passing - " paths around and interpreting input correctly. - let $GTAGSDBPATH = l:db_path - let $GTAGSROOT = a:project_root - - if g:gutentags_auto_add_gtags_cscope && - \!has_key(s:added_db_files, l:db_file) - let s:added_db_files[l:db_file] = 0 - call s:add_db(l:db_file) - endif -endfunction - -function! gutentags#gtags_cscope#generate(proj_dir, tags_file, gen_opts) abort - let l:cmd = [s:runner_exe] - let l:cmd += ['-e', '"' . g:gutentags_gtags_executable . '"'] - - 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 - - let l:proj_options_file = a:proj_dir . '/' . g:gutentags_gtags_options_file - if filereadable(l:proj_options_file) - let l:proj_options = readfile(l:proj_options_file) - let l:cmd += l:proj_options - endif - - " gtags doesn't honour GTAGSDBPATH and GTAGSROOT, so PWD and dbpath - " have to be set - let l:db_path = fnamemodify(a:tags_file, ':p:h') - let l:cmd += ['--incremental', '"'.l:db_path.'"'] - - 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('gtags_cscope') - let l:job = gutentags#start_job(l:cmd, l:job_opts) - call gutentags#add_job('gtags_cscope', a:tags_file, l:job) - else - call gutentags#trace("(fake... not actually running)") - endif - call gutentags#trace("") -endfunction - -function! gutentags#gtags_cscope#on_job_exit(job, exit_val) abort - let l:job_idx = gutentags#find_job_index_by_data('gtags_cscope', a:job) - let l:dbfile_path = gutentags#get_job_tags_file('gtags_cscope', l:job_idx) - call gutentags#remove_job('gtags_cscope', l:job_idx) - - if g:gutentags_auto_add_gtags_cscope - call s:add_db(l:dbfile_path) - endif - - if a:exit_val != 0 && !g:__gutentags_vim_is_leaving - call gutentags#warning( - \"gtags-cscope job failed, returned: ". - \string(a:exit_val)) - endif - if has('win32') && g:__gutentags_vim_is_leaving - " The process got interrupted because Vim is quitting. - " Remove the db file on Windows because there's no `trap` - " statement in the update script. - try | call delete(l:dbfile_path) | endtry - endif -endfunction - -" }}} diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/pycscope.vim b/.config/nvim/pack/bundle/start/vim-gutentags/autoload/gutentags/pycscope.vim @@ -1,86 +0,0 @@ -" Pycscope module for Gutentags - -if !has('cscope') - throw "Can't enable the pycscope module for Gutentags, this Vim has ". - \"no support for cscope files." -endif - -" Global Options {{{ - -if !exists('g:gutentags_pycscope_executable') - let g:gutentags_pycscope_executable = 'pycscope' -endif - -if !exists('g:gutentags_pyscopefile') - let g:gutentags_pyscopefile = 'pycscope.out' -endif - -if !exists('g:gutentags_auto_add_pycscope') - let g:gutentags_auto_add_pycscope = 1 -endif - -" }}} - -" Gutentags Module Interface {{{ - -let s:runner_exe = gutentags#get_plat_file('update_pyscopedb') -let s:unix_redir = (&shellredir =~# '%s') ? &shellredir : &shellredir . ' %s' -let s:added_dbs = [] - -function! gutentags#pycscope#init(project_root) abort - let l:dbfile_path = gutentags#get_cachefile( - \a:project_root, g:gutentags_pyscopefile) - let b:gutentags_files['pycscope'] = l:dbfile_path - - if g:gutentags_auto_add_pycscope && filereadable(l:dbfile_path) - if index(s:added_dbs, l:dbfile_path) < 0 - call add(s:added_dbs, l:dbfile_path) - silent! execute 'cs add ' . fnameescape(l:dbfile_path) - endif - endif -endfunction - -function! gutentags#pycscope#generate(proj_dir, tags_file, gen_opts) abort - let l:cmd = [s:runner_exe] - let l:cmd += ['-e', g:gutentags_pycscope_executable] - 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 - 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('pycscope') - let l:job = gutentags#start_job(l:cmd, l:job_opts) - call gutentags#add_job('pycscope', a:tags_file, l:job) - else - call gutentags#trace("(fake... not actually running)") - endif -endfunction - -function! gutentags#pycscope#on_job_exit(job, exit_val) abort - let l:job_idx = gutentags#find_job_index_by_data('pycscope', a:job) - let l:dbfile_path = gutentags#get_job_tags_file('pycscope', l:job_idx) - call gutentags#remove_job('pycscope', l:job_idx) - - if a:exit_val == 0 - if index(s:added_dbs, l:dbfile_path) < 0 - call add(s:added_dbs, l:dbfile_path) - silent! execute 'cs add ' . fnameescape(l:dbfile_path) - else - silent! execute 'cs reset' - endif - else - call gutentags#warning( - \"gutentags: pycscope job failed, returned: ". - \string(a:exit_val)) - endif -endfunction - -" }}} - diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/doc/gutentags.txt b/.config/nvim/pack/bundle/start/vim-gutentags/doc/gutentags.txt @@ -1,748 +0,0 @@ -*gutentags.txt* Automatic ctags management for VIM - ___ ___ ___ ___ ___ - /\__\ /\ \ /\__\ /\__\ /\ \ - /:/ _/_ \:\ \ /:/ / /:/ _/_ \:\ \ - /:/ /\ \ \:\ \ /:/__/ /:/ /\__\ \:\ \ - /:/ /::\ \ ___ \:\ \ /::\ \ /:/ /:/ _/_ _____\:\ \ - /:/__\/\:\__\ /\ \ \:\__\ /:/\:\ \ /:/_/:/ /\__\ /::::::::\__\ - \:\ \ /:/ / \:\ \ /:/ / \/__\:\ \ \:\/:/ /:/ / \:\~~\~~\/__/ - \:\ /:/ / \:\ /:/ / \:\__\ \::/_/:/ / \:\ \ - \:\/:/ / \:\/:/ / \/__/ \:\/:/ / \:\ \ - \::/ / \::/ / \::/ / \:\__\ - \/__/ \/__/ \/__/ \/__/ - ___ ___ ___ ___ - /\__\ /\ \ /\__\ /\__\ - /:/ / /::\ \ /:/ _/_ /:/ _/_ - /:/__/ /:/\:\ \ /:/ /\ \ /:/ /\ \ - /::\ \ /:/ /::\ \ /:/ /::\ \ /:/ /::\ \ - /:/\:\ \ /:/_/:/\:\__\ /:/__\/\:\__\ /:/_/:/\:\__\ - \/__\:\ \ \:\/:/ \/__/ \:\ \ /:/ / \:\/:/ /:/ / - \:\__\ \::/__/ \:\ /:/ / \::/ /:/ / - \/__/ \:\ \ \:\/:/ / \/_/:/ / - \:\__\ \::/ / /:/ / - \/__/ \/__/ \/__/ - - - GUTENTAGS REFERENCE MANUAL - by Ludovic Chabant - - *gutentags* - -1. Introduction |gutentags-intro| -2. Commands |gutentags-commands| -3. Status Line |gutentags-status-line| -4. Global Settings |gutentags-settings| -5. Project Settings |gutentags-project-settings| - -============================================================================= -1. Introduction *gutentags-intro* - -Gutentags is a plugin that takes care of the much needed management of tags -files in Vim. It will (re)generate tag files as you work while staying -completely out of your way. It will even do its best to keep those tag files -out of your way too. It has no dependencies and just works. - -In order to generate tag files, Gutentags will have to figure out what's in -your project. To do this, it will locate well-known project root markers like -SCM folders (.git, .hg, etc.), any custom tags you define (with -|gutentags_project_root|), and even things you may have defined already with -other plugins, like CtrlP. - -If the current file you're editing is found to be in such a project, Gutentags -will make sure the tag file for that project is up to date. Then, as you work -in files in that project, it will partially re-generate the tag file. Every -time you save, it will silently, in the background, update the tags for that -file. - -Usually, `ctags` can only append tags to an existing tag file, so Gutentags -removes the tags for the current file first, to make sure the tag file is -always consistent with the source code. - -Also, Gutentags is clever enough to not stumble upon itself by triggering -multiple ctags processes if you save files too fast, or if your project is -really big. - - -1.1 Requirements - *gutentags-ctags-requirements* - -If you're using the `ctags` modules (which is the default and only working one -at this point, really), you will need a `tags` generator that supports the -following arguments: - -* `-f` (to specify the output file) -* `--append` (to append to an existing file while keeping it sorted) -* `--exclude` (to exclude file patterns) -* `--options` (to specify an options file) - -This means you probably want Exuberant Ctags or Universal Ctags. The basic -old BSD Ctags WON'T WORK. Other language-specific versions may or may not -work. Check with their help or man page. - - -1.2 Similar Plugins - *gutentags-similar-plugins* - -There are some similar Vim plugins out there ("vim-tags", "vim-autotag", -"vim-automatic-ctags", etc.). They all fail on one or more of the requirements -I set for myself with Gutentags: - -* No other dependency than running Vim: no Python, Ruby, or whatever. -* Cross-platform: should work on at least Mac and Windows. -* Incremental tags generation: don't re-generate the whole project all the - time. This may be fine for small projects, but it doesn't scale. -* External process management: if the ctags process is taking a long time, - don't run another one because I saved the file again. -* Keep the tag file consistent: don't just append the current file's tags to - the tag file, otherwise you will still "see" tags for deleted or renamed - classes and functions. -* Automatically create the tag file: you open something from a freshly forked - project, it should start indexing it automatically, just like in Sublime Text - or Visual Studio or any other IDE. - - -============================================================================= -2. Commands *gutentags-commands* - - *gutentags-project-commands* -The following commands are only available in buffers that have been found to -belong to a project that should be managed by Gutentags. See -|gutentags_project_root| for how Gutentags figures out the project a file -belongs to. When no project is found (i.e. the file is not under any of the -known project markers), Gutentags is disabled for that buffer, and the -following commands and remarks don't apply. - -If you want to force-disable Gutentags for a given project even though it does -match one of the items in |gutentags_project_root|, create a file named -"`.notags`" at the root of the project. - -The tag file that Gutentags creates and manages will be named after -|gutentags_ctags_tagfile|, relative to the project's root directory. When -Gutentags finds a valid project root, it will prepend the tag file's path to -'tags', unless |gutentags_ctags_auto_set_tags| is set to 0. This is to make -sure Vim will use that file first. - -If a file managed by Gutentags is opened and no tag file already exists, -Gutentags will start generating it right away in the background, unless -|gutentags_generate_on_missing| is set to 0. If you have a large project, you -may want to know when Gutentags is generating tags: see -|gutentags-status-line| to display an indicator in your status line. - -When a file managed by Gutentags is saved, the tag file will be incrementally -updated, i.e. references to the recently saved file are removed, and that file -is re-parsed for tags, with the result being merged into the tag file. This -makes the tag file 100% consistent with the latest changes. This doesn't -happen however if |gutentags_generate_on_write| is set to 0, in which case you -have to run |GutentagsUpdate| manually. - - - *:GutentagsUpdate* -:GutentagsUpdate - Forces an update of the current tag file with the - current buffer. If tags are already being generated, - you will be notified and the command will abort. - -:GutentagsUpdate! - Like |GutentagsUpdate|, but updates the current tags - file with the whole project instead of just the - current buffer. - - -Some debugging/troubleshooting commands are also available if the -|gutentags_define_advanced_commands| global setting is set to 1. - - *:GutentagsToggleEnabled* -:GutentagsToggleEnabled - Disables and re-enables Gutentags. - When Gutentags is disabled, it won't update your tag - file when you save a buffer. It will however still - look for project markers as you open new buffers so - that they can start working again when you re-enable - Gutentags. - - {only available when - |gutentags_define_advanced_commands| is set} - - *GutentagsToggleTrace* -:GutentagsToggleTrace - If you want to keep an eye on what Gutentags is doing, - you can enable tracing. This will show messages every - time Gutentags does something. It can get annoying - quickly, since it will require you to press a key to - dismiss those messages, but it can be useful to - troubleshoot a problem. - In addition to messages in Vim, it will also make - Gutentags redirect the output of the tag generation - script to a `.log` file in the project root. - - {only available when - |gutentags_define_advanced_commands| is set} - - -Gutentags also has some user auto-commands (see |User| and |:doautocmd|): - - *GutentagsUpdating* -GutentagsUpdating - This auto-command is triggered when a background - update job has started. - - *GutentagsUpdated* -GutentagsUpdated - This auto-command is triggered when a background - update job has finished. - - -============================================================================= -3. Status Line *gutentags-status-line* - -Tag file generation can take a while if you're working on a project big -enough. In that case, you may want to know when `ctags` is running, so you -have a heads up if some of the tags aren't recognized yet. - - *gutentags#statusline()* -You can display an indicator of tag generation progress in your |status-line| -with the following function: > - :set statusline+=%{gutentags#statusline()} - -The function will, by default, print a list of modules in the status line. So -if the `ctags` module (see |g:gutentags_modules|) is currently generating -a tags file, you will see "ctags" printed in the status line. If nothing is -happening, nothing will be printed in the status line. - -You can pass some parameters to customize this: - -1. A prefix string (defaults to `""`). -2. A suffix string (defaults to `""`). -3. The text to print (defaults to the names of modules currently generating - something). - -So using `gutentags#statusline('[', ']')` would print `"[ctags]"` instead of -`"ctags"`. - -Because Gutentags runs the tag generation in the background, the statusline -indicator might stay there even after the background process has ended. It -would only go away when Vim decides to refresh the statusline. You can force -refresh it in a callback on |GutentagsUpdating| and |GutentagsUpdated|. - -For instance, with the `lightline` plugin: - - augroup MyGutentagsStatusLineRefresher - autocmd! - autocmd User GutentagsUpdating call lightline#update() - autocmd User GutentagsUpdated call lightline#update() - augroup END - - *gutentags#statusline_cb* -As an alternative to the previous function, `gutentags#statusline_cb` takes -a single parameter which should be a |Funcref| or a function name. This -function should take a list of active module names, and return a string. This -lets you completely control what the status line will print. - -For instance: - function! s:get_gutentags_status(mods) abort - let l:msg = '' - if index(a:mods, 'ctags') >= 0 - let l:msg .= '♨' - endif - if index(a:mods, 'cscope') >= 0 - let l:msg .= '♺' - endif - return l:msg - endfunction - - :set statusline+=%{gutentags#statusline_cb( - \function('<SID>get_gutentags_status'))} - -By default, the callback function doesn't get called if no tags generation is -currently happening. You can pass `1` as a second argument so that the -callback function is always called. - - -============================================================================= -4. Global Settings *gutentags-settings* - -The following settings can be defined in your |vimrc| to change the default -behaviour of Gutentags. - - *gutentags_enabled* -g:gutentags_enabled - Defines whether Gutentags should be enabled. When - disabled, Gutentags will still scan for project root - markers when opening buffers. This is so that when you - re-enable Gutentags, you won't have some buffers - mysteriously working while others (those open last) - don't. - Defaults to `1`. - - *gutentags_trace* -g:gutentags_trace - When true, Gutentags will spit out debugging - information as Vim messages (which you can later read - with |:messages|). It also runs its background scripts - with extra parameters to log activity to a `tags.log` - file that you can also inspect for more information. - - Note: you can run `:verbose GutentagsUpdate` to - temporarily set |g:gutentags_trace| to `1` for that - update only. - - Defaults to `0`. - - *gutentags_dont_load* -g:gutentags_dont_load - Prevents Gutentags from loading at all on Vim startup. - - The difference between this and |gutentags_enabled| is - that |gutentags_enabled| can be turned on and off in - the same Vim session -- Gutentags as a plugin stays - loaded and will keep track of what happened while it - was disabled. However, |gutentags_dont_load| only - works on Vim startup and will prevent Gutentags from - loading at all, as if it wasn't there. - - *gutentags_modules* -g:gutentags_modules - A list of modules to load with Gutentags. Each module - is responsible for generating a specific type of tags - file. - Valid values are: - - - `ctags`: generates a `tags` file using - a `ctags`-compatible program like Exhuberant Ctags - or Universal Ctags. - - - `cscope`: generates a code database file using - `cscope`. - - - `pycscope`: generates a code database file using - `pycscope`. - - - `gtags_cscope`: same as `cscope` but uses GNU's - `gtags` executable and database. - - Defaults to `[ctags]`. - - *gutentags_project_root* -g:gutentags_project_root - When a buffer is loaded, Gutentags will figure out if - it's part of a project that should have tags managed - automatically. To do this, it looks for "root markers" - in the current file's directory and its parent - directories. If it finds any of those markers, - Gutentags will be enabled for the project, and a tags - file named after |gutentags_ctags_tagfile| will be - created at the project root. - Defaults to `[]` (an empty |List|). - A list of default markers will be appended to the - user-defined ones unless - |gutentags_add_default_project_roots| is set to 0. - - *gutentags_add_default_project_roots* -g:gutentags_add_default_project_roots - Defines whether Gutentags should always define some - default project roots (see |gutentags_project_root|). - This can be useful to prevent unnecessary disk access - when Gutentags searches for a project root. - The default markers are: - `['.git', '.hg', '.svn', '.bzr', '_darcs', '_darcs', '_FOSSIL_', '.fslckout']` - - *gutentags_add_ctrlp_root_markers* -g:gutentags_add_ctrlp_root_markers - If Gutentags finds `g:ctrlp_root_markers` (used by the - CtrlP plugin), it will append those root markers to - the existing ones (see |g:gutentags_project_root|). - Set this to 0 to stop it from happening. - Defaults to 1. - - *gutentags_exclude_filetypes* -g:gutentags_exclude_filetypes - A |List| of file types (see |'filetype'|) that Gutentags - should ignore. When a buffer is opened, if its - 'filetype' is found in this list, Gutentags features - won't be available for this buffer. - Defaults to an empty list (`[]`). - - *gutentags_exclude_project_root* -g:gutentags_exclude_project_root - A list of project roots to generally ignore. If a file - is opened inside one of those projects, Gutentags - won't be activated. This is similar to placing - a `.notags` file in the root of those projects, but - can be useful when you don't want to, or can't, place - such a file there. - Defaults to `['/usr/local', '/opt/homebrew', '/home/linuxbrew/.linuxbrew']`, - which are the folders where Homebrew is known to - create a Git repository by default. - - *gutentags_project_root_finder* -g:gutentags_project_root_finder - When a buffer is loaded, Gutentags uses a default - (internal) implementation to find that file's - project's root directory, using settings like - |g:gutentags_project_root|. When you specify - |g:gutentags_project_root_finder|, you can tell - Gutentags to use a custom implementation, such as - `vim-projectroot`. The value of this setting must be - the name of a function that takes a single string - argument (the path to the current buffer's file) and - returns a string value (the project's root directory). - Defaults to `''`. - Note: when set, the called implementation will - possibly ignore |g:gutentags_project_root|. - Note: an implementation can fallback to the default - behaviour by calling - `gutentags#default_get_project_root`. - - *gutentags_generate_on_missing* -g:gutentags_generate_on_missing - If set to 1, Gutentags will start generating an initial - tag file if a file is open in a project where no tags - file is found. See |gutentags_project_root| for how - Gutentags locates the project. - When set to 0, Gutentags will only generate the first - time the file is saved (if - |gutentags_generate_on_write| is set to 1), or when - |GutentagsUpdate| or |GutentagsGenerate| is run. - Defaults to 1. - - *gutentags_generate_on_new* -g:gutentags_generate_on_new - If set to 1, Gutentags will start generating the tag - file when a new project is open. A new project is - considered open when a buffer is created for a file - whose corresponding tag file has not been "seen" yet - in the current Vim session -- which pretty much means - when you open the first file in a given source control - repository. - When set to 0, Gutentags won't do anything special. - See also |gutentags_generate_on_missing| and - |gutentags_generate_on_write|. - Defaults to 1. - - *gutentags_generate_on_write* -g:gutentags_generate_on_write - If set to 1, Gutentags will update the current - project's tag file when a file inside that project is - saved. See |gutentags_project_root| for how Gutentags - locates the project. - When set to 0, Gutentags won't do anything on save. - This means that the project's tag file won't reflect - the latest changes, and you will have to run - |GutentagsUpdate| manually. - Defaults to 1. - - *gutentags_generate_on_empty_buffer* -g:gutentags_generate_on_empty_buffer - If set to 1, Gutentags will start generating the tag - file even if there's no buffer currently open, as long - as the current working directory (as returned by - |:cd|) is inside a known project. - This is useful if you want Gutentags to generate the - tag file right after opening Vim. - Defaults to 0. - - *gutentags_background_update* -g:gutentags_background_update - Specifies whether the process that updates the tags - file should be run in the background or in the - foreground. If run in the foreground, Vim will block - until the process is complete. - Defaults to 1. - - *gutentags_cache_dir* -g:gutentags_cache_dir - Specifies a directory in which to create all the tags - files, instead of writing them at the root of each - project. This is handy to keep tags files from - polluting many directories all across your computer. - - *gutentags_resolve_symlinks* -g:gutentags_resolve_symlinks - When set to 1, Gutentags will resolve any symlinks in - the current buffer's path in order to find the project - it belongs to. This is what you want if you're editing - a symlink located outside of the project, and it - points to a file inside the project. However, this is - maybe not what you want if the symlink itself is - part of the project. - Defaults to 0. - - *gutentags_init_user_func* -g:gutentags_init_user_func - When set to a non-empty string, it is expected to be - the name of a function that will be called when a file - is opened in a project. The function gets passed the - path of the file and if it returns 0, Gutentags won't - be enabled for that file. - - You can use this to manually set buffer-local - settings: - - * `b:gutentags_ctags_tagfile` (see |gutentags_ctags_tagfile|). - - This setting was previously called - `gutentags_enabled_user_func`. The old setting is - still used as a fallback. - - Defaults to "". - - *gutentags_define_advanced_commands* -g:gutentags_define_advanced_commands - Defines some advanced commands like - |GutentagsToggleEnabled| and |GutentagsUnlock|. - - *gutentags_project_info* -g:gutentags_project_info - Defines ways for Gutentags to figure out what kind of - project any given file belongs to. This should be - a list of dictionaries: - - let g:gutentags_project_info = [] - call add(g:gutentags_project_info, {...}) - - Each dictionary item must contain at least a `type` - key, indicating the type of project: - - {"type": "python"} - - Other items will be used to figure out if a project is - of the given type. - - "file": any existing file with this path (relative to - the project root) will make the current project match - the given info. - - "glob": any result found with this glob pattern - (relative to the project root) will make the current - project match the given info. See |glob()| for more - information. - - Gutentags adds by default the following definitions: - - call add(g:gutentags_project_info, {'type': 'python', 'file': 'setup.py'}) - call add(g:gutentags_project_info, {'type': 'ruby', 'file': 'Gemfile'}) - - This means, for example, that you can use - `g:gutentags_ctags_executable_ruby` out of the box. - See |gutentags_ctags_executable_{filetype}| for more - information. - - *gutentags_file_list_command* -g:gutentags_file_list_command - Specifies command(s) to use to list files for which - tags should be generated, instead of recursively - examining all files within the project root. When - invoked, file list commands will execute in the - project root directory. - - This setting is useful in projects using source - control to restrict tag generation to only files - tracked in the repository. - - This variable may be set in one of two ways. If - set as a |String|, the specified command will be used to - list files for all projects. For example: > - - let g:gutentags_file_list_command = 'find . -type f' -< - If set as a |Dictionary|, this variable should be set - as a mapping of project root markers to the desired - file list command for that root marker. (See - |gutentags_project_root| for how Gutentags uses root - markers to locate the project.) For example: > - - let g:gutentags_file_list_command = { - \ 'markers': { - \ '.git': 'git ls-files', - \ '.hg': 'hg files', - \ }, - \ } -< - Note: If a custom ctags executable is specified, it - must support the '-L' command line option in order to - read the list of files to be examined. - - -The following settings are valid for the `ctags` module. - - *gutentags_ctags_executable* -g:gutentags_ctags_executable - Specifies the ctags executable to launch. - Defaults to `ctags`. - - *gutentags_ctags_executable_{filetype}* -g:gutentags_ctags_executable_{type} - Specifies the ctags executable to launch for a project - of type {type}. See |gutentags_project_info| for more - information. - IMPORTANT: please see |gutentags-ctags-requirements|. - Example: > - let g:gutentags_ctags_executable_ruby = 'ripper-tags' -< - - *gutentags_ctags_tagfile* -g:gutentags_ctags_tagfile - Specifies the name of the tag file to create. This - will be appended to the project's root. See - |gutentags_project_root| for how Gutentags locates the - project. - Defaults to `tags`. - - *gutentags_ctags_exclude* -g:gutentags_ctags_exclude - A list of file patterns to pass to the - |gutentags_ctags_executable| so that they will be - excluded from parsing for the tags generation. - See also |gutentags_ctags_exclude_wildignore|. - Defaults to `[]` (an empty |List|). - - *gutentags_ctags_exclude_wildignore* -g:gutentags_ctags_exclude_wildignore - When 1, Gutentags will automatically pass your - 'wildignore' file patterns to the - |gutentags_ctags_executable| so that they are ignored. - Set also |gutentags_ctags_exclude| to pass custom - patterns. - Defaults to 1. - - *gutentags_ctags_auto_set_tags* -g:gutentags_ctags_auto_set_tags - If set to 1, Gutentags will automatically prepend - 'tags' with the exact path to the tag file for the - current project. See |gutentags_project_root| for how - Gutentags locates the project. - When set to 0, Gutentags doesn't change 'tags', and - this means that whatever tag file it generates may - not be picked up by Vim. See |tagfiles()| to know what - tag files Vim knows about. - Defaults to 1. - - *gutentags_ctags_extra_args* -g:gutentags_ctags_extra_args - A list of arguments to pass to `ctags`. - Defaults to `[]`. - - *gutentags_ctags_post_process_cmd* -g:gutentags_ctags_post_process_cmd - If defined, the tags generation script will run the - command with an argument that points to a temporary - copy of the tags file. If the post-process step is - modifying the tags file, it needs to do so in-place. - This is useful for cleaning up a tags file that may - contain tags with non-ASCII names that somehow upsets - Vim. - Defaults to `""` (an empty |String|). - - -The following settings are valid for the `cscope` module. - - *gutentags_cscope_executable* -g:gutentags_cscope_executable - Specifies the name or path of the `cscope` executable - to use to generate the code database. - Defaults to `"cscope"`. - - *gutentags_scopefile* -g:gutentags_scopefile - Specifies the name of the scope file to create. This - will be appended to the project's root. See - |gutentags_project_root| for how Gutentags locates the - project. - Defaults to `"cscope.out"`. - - *gutentags_auto_add_cscope* -g:gutentags_auto_add_cscope - If set to 1, Gutentags will automatically add the - generated code database to Vim by running `:cs add` - (see |:cscope|). - Defaults to 1. - - *gutentags_cscope_build_inverted_index* -g:gutentags_cscope_build_inverted_index - If set to 1, Gutentags will make `cscope` build an - inverted index. - Defaults to 0. - - -The following settings are valid for the `pycscope` module. - - *gutentags_pycscope_executable* -g:gutentags_pycscope_executable - Specifies the name or path of the `pycscope` executable - to use to generate the code database. - Defaults to `"pycscope"`. - - *gutentags_auto_add_pycscope* -g:gutentags_auto_add_pycscope - If set to 1, Gutentags will automatically add the - generated code database to Vim by running `:cs add` - (see |:pycscope|). - Defaults to 1. - - -The following settings are valid for the `gtags_cscope` module. - - *gutentags_gtags_executable* -g:gutentags_gtags_executable - Specifies the name or path of the `gtags` executable - to use to generate the code database. - Defaults to `"gtags"`. - - *gutentags_gtags_cscope_executable* -g:gutentags_gtags_cscope_executable - Specifies the name or path of the `gtags-cscope` - executable to use to generate the code database. - Defaults to `"gtags-cscope"`. - - *gutentags_gtags_dbpath* -g:gutentags_gtags_dbpath - Path from the cache directory (|gutentags_cache_dir| - or project root) to the folder containing the - definition database file (usually called `GTAGS`). - Defaults to `""`. - - *gutentags_gtags_options_file* -g:gutentags_gtags_options_file - The name of a file that will be looked for in - a project root directory. The file is expected to - contain `gtags` options (one per line). - Defaults to `".gutgtags"`. - - *gutentags_auto_add_gtags_cscope* -g:gutentags_auto_add_gtags_cscope - If set to 1, Gutentags will automatically add the - generated code database to Vim by running `:cs add` - (see |:cscope|). - Defaults to 1. - - -People using `cscope`, `pycscope` or `gtags_cscope` across multiple projects in the same -Vim instance might be interested in the `gutentags_plus` plugin, which handles -switching databases automatically before performing a query. -See https://github.com/skywind3000/gutentags_plus. - -============================================================================= -5. Project Settings *gutentags-project-settings* - -Gutentags can be customized to some extent on a per-project basis with the -following files present in the project root directory: - - *gutentags-.gutctags* -`.gutctags`: if this file exists, Ctags will be told to load additional -command-line parameters by reading it line by line (see the Ctags -documentation for more information). - -Note that for complex reasons, Gutentags can't run `ctags` from the project -root if you're using |gutentags_cache_dir|, so if the `.gutctags` file exists, -it will be pre-processed in order to make all `--exclude=` clauses into -absolute paths (by prepending the project root). The resulting file will be -saved into the cache directory, and passed to `ctags` via the `--options=` -parameter. If you're _not_ using |gutentags_cache_dir|, the `.gutctags` file -is _not_ pre-processed, and is passed as-is via the `--options=` parameter. - - *gutentags-.notags* -`.notags`: if this file exists, Gutentags will be disabled completely for that -project. - - - vim:tw=78:et:ft=help:norl: diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_gtags.sh b/.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_gtags.sh @@ -1,48 +0,0 @@ -#!/usr/bin/env bash - -set -e - -PROG_NAME=$0 -GTAGS_EXE=gtags -FILE_LIST_CMD= - -ShowUsage() { - echo "Usage:" - echo " $PROG_NAME <options>" - echo "" - echo " -e [exe=gtags]: The gtags executable to run." - echo " -L [cmd=]: The file list command to run." - echo "" -} - -while [[ $# -ne 0 ]]; do - case "$1" in - -h) - ShowUsage - exit 0 - ;; - -e) - GTAGS_EXE=$2 - shift 2 - ;; - -L) - FILE_LIST_CMD=$2 - shift 2 - ;; - *) - GTAGS_ARGS="$GTAGS_ARGS $1" - shift - ;; - esac -done - -if [ -n "$FILE_LIST_CMD" ]; then - CMD="$FILE_LIST_CMD | $GTAGS_EXE -f- $GTAGS_ARGS" -else - CMD="$GTAGS_EXE $GTAGS_ARGS" -fi - -echo "Running gtags:" -echo "$CMD" -eval "$CMD" -echo "Done." diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_pyscopedb.sh b/.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_pyscopedb.sh @@ -1,93 +0,0 @@ -#!/bin/sh - -set -e - -PROG_NAME=$0 -PYCSCOPE_EXE=pycscope -PYCSCOPE_ARGS= -DB_FILE=pycscope.out -# Note that we keep the same name -PROJECT_ROOT= -FILE_LIST_CMD= - -ShowUsage() { - echo "Usage:" - echo " $PROG_NAME <options>" - echo "" - echo " -e [exe=pycscope]: The pycscope executable to run" - echo " -f [file=pycscope.out]: The path to the ctags file to update" - echo " -p [dir=]: The path to the project root" - echo " -L [cmd=]: The file list command to run" - echo "" -} - - -while getopts "h?e:f:p:L:" opt; do - case $opt in - h|\?) - ShowUsage - exit 0 - ;; - e) - PYCSCOPE_EXE=$OPTARG - ;; - f) - DB_FILE=$OPTARG - ;; - p) - PROJECT_ROOT=$OPTARG - ;; - L) - FILE_LIST_CMD=$OPTARG - ;; - esac -done - -shift $((OPTIND - 1)) - -if [ "$1" != "" ]; then - echo "Invalid Argument: $1" - exit 1 -fi - -echo "Locking pycscope DB file..." -echo $$ > "$DB_FILE.lock" - -# Remove lock and temp file if script is stopped unexpectedly. -trap 'rm -f "$DB_FILE.lock" "$DB_FILE.files" "$DB_FILE.temp"' INT QUIT TERM EXIT - -PREVIOUS_DIR=$(pwd) -if [ -d "$PROJECT_ROOT" ]; then - cd "$PROJECT_ROOT" -fi - -if [ -n "${FILE_LIST_CMD}" ]; then - if [ "${PROJECT_ROOT}" = "." ]; then - eval "$FILE_LIST_CMD" > "${DB_FILE}.files" - else - # If using a tags cache directory, use absolute paths - eval "$FILE_LIST_CMD" | while read -r l; do - echo "${PROJECT_ROOT%/}/${l}" - done > "${DB_FILE}.files" - fi -else - find . -type f > "${DB_FILE}.files" -fi -PYCSCOPE_ARGS="${PYCSCOPE_ARGS} -i ${DB_FILE}.files" - -echo "Running pycscope" -echo "$PYCSCOPE_EXE -f \"$DB_FILE.temp\" "$PYCSCOPE_ARGS -"$PYCSCOPE_EXE" -f "$DB_FILE.temp" $PYCSCOPE_ARGS - -if [ -d "$PROJECT_ROOT" ]; then - cd "$PREVIOUS_DIR" -fi - -echo "Replacing pycscope DB file" -echo "mv -f \"$DB_FILE.temp\" \"$DB_FILE\"" -mv -f "$DB_FILE.temp" "$DB_FILE" - -echo "Unlocking pycscope DB file..." -rm -f "$DB_FILE.lock" - -echo "Done." diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_scopedb.sh b/.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_scopedb.sh @@ -1,124 +0,0 @@ -#!/bin/sh - -set -e - -PROG_NAME=$0 -CSCOPE_EXE=cscope -CSCOPE_ARGS= -DB_FILE=cscope.out -PROJECT_ROOT= -FILE_LIST_CMD= -BUILD_INVERTED_INDEX=0 - -ShowUsage() { - echo "Usage:" - echo " $PROG_NAME <options>" - echo "" - echo " -e [exe=cscope]: The cscope executable to run" - echo " -f [file=cscope.out]: The path to the ctags file to update" - echo " -p [dir=]: The path to the project root" - echo " -L [cmd=]: The file list command to run" - echo " -I: Builds an inverted index" - echo "" -} - - -while getopts "h?e:f:p:L:I" opt; do - case $opt in - h|\?) - ShowUsage - exit 0 - ;; - e) - CSCOPE_EXE=$OPTARG - ;; - f) - DB_FILE=$OPTARG - ;; - p) - PROJECT_ROOT=$OPTARG - ;; - L) - FILE_LIST_CMD=$OPTARG - ;; - I) - BUILD_INVERTED_INDEX=1 - ;; - esac -done - -shift $((OPTIND - 1)) - -if [ "$1" != "" ]; then - echo "Invalid Argument: $1" - exit 1 -fi - -echo "Locking cscope DB file..." -echo $$ > "$DB_FILE.lock" - -# Remove lock and temp file if script is stopped unexpectedly. -CleanUp() { - rm -f "$DB_FILE.lock" "$DB_FILE.files" "$DB_FILE.temp" - if [ "$BUILD_INVERTED_INDEX" -eq 1 ]; then - rm -f "$DB_FILE.temp.in" "$DB_FILE.temp.po" - fi -} - -trap CleanUp INT QUIT TERM EXIT - -PREVIOUS_DIR=$(pwd) -if [ -d "$PROJECT_ROOT" ]; then - cd "$PROJECT_ROOT" -fi - -if [ -n "${FILE_LIST_CMD}" ]; then - if [ "${PROJECT_ROOT}" = "." ]; then - eval "$FILE_LIST_CMD" | while read -r l; do - echo "\"${l}\"" - done > "${DB_FILE}.files" - else - # If using a tags cache directory, use absolute paths - eval "$FILE_LIST_CMD" | while read -r l; do - echo "\"${PROJECT_ROOT%/}/${l}\"" - done > "${DB_FILE}.files" - fi -else - find . -type f ! -name ${DB_FILE} | while read -r l; do - echo "\"${l}\"" - done > "${DB_FILE}.files" -fi - -if [ ! -s "${DB_FILE}.files" ]; then - echo "There is no files to generate cscope DB" - exit -fi - -CSCOPE_ARGS="${CSCOPE_ARGS} -i ${DB_FILE}.files" - -if [ "$BUILD_INVERTED_INDEX" -eq 1 ]; then - CSCOPE_ARGS="$CSCOPE_ARGS -q" -fi - -echo "Running cscope" -echo "$CSCOPE_EXE $CSCOPE_ARGS -b -k -f \"$DB_FILE.temp\"" -"$CSCOPE_EXE" $CSCOPE_ARGS -v -b -k -f "$DB_FILE.temp" - -if [ -d "$PROJECT_ROOT" ]; then - cd "$PREVIOUS_DIR" -fi - -echo "Replacing cscope DB file" -if [ "$BUILD_INVERTED_INDEX" -eq 1 ]; then - echo "mv -f \"$DB_FILE.temp.in\" \"$DB_FILE.in\"" - mv -f "$DB_FILE.temp.in" "$DB_FILE.in" - echo "mv -f \"$DB_FILE.temp.po\" \"$DB_FILE.po\"" - mv -f "$DB_FILE.temp.po" "$DB_FILE.po" -fi -echo "mv -f \"$DB_FILE.temp\" \"$DB_FILE\"" -mv -f "$DB_FILE.temp" "$DB_FILE" - -echo "Unlocking cscope DB file..." -rm -f "$DB_FILE.lock" - -echo "Done." diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_tags.sh b/.config/nvim/pack/bundle/start/vim-gutentags/plat/unix/update_tags.sh @@ -1,168 +0,0 @@ -#!/bin/sh - -set -e - -PROG_NAME=$0 -CTAGS_EXE=ctags -CTAGS_ARGS= -CTAGS_OPT_FILE= -TAGS_FILE=tags -PROJECT_ROOT= -LOG_FILE= -FILE_LIST_CMD= -FILE_LIST_CMD_IS_ABSOLUTE=0 -UPDATED_SOURCE= -POST_PROCESS_CMD= -PAUSE_BEFORE_EXIT=0 - - -ShowUsage() { - echo "Usage:" - echo " $PROG_NAME <options>" - echo "" - echo " -e [exe=ctags]: The ctags executable to run" - echo " -t [file=tags]: The path to the ctags file to update" - echo " -p [dir=]: The path to the project root" - echo " -l [file=]: The path to a log file" - echo " -L [cmd=]: The file list command to run" - echo " -A: Specifies that the file list command returns " - echo " absolute paths" - echo " -s [file=]: The path to the source file that needs updating" - echo " -x [pattern=]: A pattern of files to exclude" - echo " -o [options=]: An options file to read additional options from" - echo " -O [params=]: Parameters to pass to ctags" - echo " -P [cmd=]: Post process command to run on the tags file" - echo " -c: Ask for confirmation before exiting" - echo "" -} - -while getopts "h?e:x:t:p:l:L:s:o:O:P:cA" opt; do - case $opt in - h|\?) - ShowUsage - exit 0 - ;; - e) - CTAGS_EXE="$OPTARG" - ;; - x) - CTAGS_ARGS="$CTAGS_ARGS --exclude=$OPTARG" - ;; - t) - TAGS_FILE="$OPTARG" - ;; - p) - PROJECT_ROOT="$OPTARG" - ;; - l) - LOG_FILE="$OPTARG" - ;; - L) - FILE_LIST_CMD="$OPTARG" - ;; - A) - FILE_LIST_CMD_IS_ABSOLUTE=1 - ;; - s) - UPDATED_SOURCE="$OPTARG" - ;; - c) - PAUSE_BEFORE_EXIT=1 - ;; - o) - CTAGS_OPT_FILE="--options=$OPTARG" - ;; - O) - CTAGS_ARGS="$CTAGS_ARGS $OPTARG" - ;; - P) - POST_PROCESS_CMD="$OPTARG" - ;; - esac -done - -shift $((OPTIND - 1)) - -if [ "$1" != "" ]; then - echo "Invalid Argument: $1" - exit 1 -fi - -echo "Locking tags file..." -echo $$ > "$TAGS_FILE.lock" - -# Remove lock and temp file if script is stopped unexpectedly. -trap 'errorcode=$?; rm -f "$TAGS_FILE.lock" "$TAGS_FILE.files" "$TAGS_FILE.temp"; exit $errorcode' INT QUIT TERM EXIT - -INDEX_WHOLE_PROJECT=1 -if [ -f "$TAGS_FILE" ]; then - if [ "$UPDATED_SOURCE" != "" ]; then - echo "Removing references to: $UPDATED_SOURCE" - tab=" " - cmd="grep --text -Ev '^[^$tab]+$tab$UPDATED_SOURCE$tab' '$TAGS_FILE' > '$TAGS_FILE.temp'" - echo "$cmd" - eval "$cmd" || true - INDEX_WHOLE_PROJECT=0 - fi -fi - -if [ $INDEX_WHOLE_PROJECT -eq 1 ]; then - if [ -n "${FILE_LIST_CMD}" ]; then - if [ "${PROJECT_ROOT}" = "." ] || [ $FILE_LIST_CMD_IS_ABSOLUTE -eq 1 ]; then - echo "Running file list command" - echo "eval $FILE_LIST_CMD > \"${TAGS_FILE}.files\"" - eval "$FILE_LIST_CMD" > "${TAGS_FILE}.files" - else - # If using a tags cache directory, use absolute paths - echo "Running file list command, patching for absolute paths" - echo "eval $FILE_LIST_CMD" - eval "$FILE_LIST_CMD" | while read -r l; do - echo "${PROJECT_ROOT%/}/${l}" - done > "${TAGS_FILE}.files" - fi - CTAGS_ARGS="${CTAGS_ARGS} -L" - CTAGS_ARG_LAST="${TAGS_FILE}.files" - else - CTAGS_ARG_LAST="${PROJECT_ROOT}" - fi - - echo "Running ctags on whole project" - if [ "$CTAGS_OPT_FILE" != "" ]; then - echo "$CTAGS_EXE -f \"$TAGS_FILE.temp\" \"$CTAGS_OPT_FILE\" $CTAGS_ARGS \"$CTAGS_ARG_LAST\"" - "$CTAGS_EXE" -f "$TAGS_FILE.temp" "$CTAGS_OPT_FILE" $CTAGS_ARGS "$CTAGS_ARG_LAST" - else - echo "$CTAGS_EXE -f \"$TAGS_FILE.temp\" $CTAGS_ARGS \"$CTAGS_ARG_LAST\"" - "$CTAGS_EXE" -f "$TAGS_FILE.temp" $CTAGS_ARGS "$CTAGS_ARG_LAST" - fi -else - echo "Running ctags on \"$UPDATED_SOURCE\"" - if [ "$CTAGS_OPT_FILE" != "" ]; then - echo "$CTAGS_EXE -f \"$TAGS_FILE.temp\" \"$CTAGS_OPT_FILE\" $CTAGS_ARGS --append \"$UPDATED_SOURCE\"" - "$CTAGS_EXE" -f "$TAGS_FILE.temp" "$CTAGS_OPT_FILE" $CTAGS_ARGS --append "$UPDATED_SOURCE" - else - echo "$CTAGS_EXE -f \"$TAGS_FILE.temp\" $CTAGS_ARGS --append \"$UPDATED_SOURCE\"" - "$CTAGS_EXE" -f "$TAGS_FILE.temp" $CTAGS_ARGS --append "$UPDATED_SOURCE" - fi -fi - -if [ "$POST_PROCESS_CMD" != "" ]; then - echo "Running post process" - echo "$POST_PROCESS_CMD \"$TAGS_FILE.temp\"" - $POST_PROCESS_CMD "$TAGS_FILE.temp" -fi - -echo "Replacing tags file" -echo "mv -f \"$TAGS_FILE.temp\" \"$TAGS_FILE\"" -if [ -f "$TAGS_FILE.temp" ]; then - mv -f "$TAGS_FILE.temp" "$TAGS_FILE" -fi - -echo "Unlocking tags file..." -rm -f "$TAGS_FILE.lock" - -echo "Done." - -if [ $PAUSE_BEFORE_EXIT -eq 1 ]; then - printf "Press ENTER to exit..." - read -r -fi diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/plat/win32/update_gtags.cmd b/.config/nvim/pack/bundle/start/vim-gutentags/plat/win32/update_gtags.cmd @@ -1,56 +0,0 @@ -@echo off - -setlocal EnableExtensions EnableDelayedExpansion - -rem ========================================== -rem PARSE ARGUMENTS -rem ========================================== -set "GTAGS_EXE=gtags" -set "GTAGS_ARGS=" -set "FILE_LIST_CMD=" - -if [%1]==[] goto :Usage - -:ParseArgs -if [%1]==[] goto :DoneParseArgs -if [%1]==[-e] ( - set GTAGS_EXE=%~2 - shift /1 - shift /1 - goto :ParseArgs -) -if [%1]==[-L] ( - set FILE_LIST_CMD=%~2 - shift /1 - shift /1 - goto :ParseArgs -) -set "GTAGS_ARGS=%GTAGS_ARGS% %1" -shift /1 -goto :ParseArgs - -:DoneParseArgs -rem ========================================== -rem GENERATE GTAGS -rem ========================================== -set "GTAGS_CMD=%GTAGS_EXE% %GTAGS_ARGS%" -if /i not "%FILE_LIST_CMD%"=="" ( - set "GTAGS_CMD=%FILE_LIST_CMD% | %GTAGS_EXE% -f- %GTAGS_ARGS%" -) -echo Running gtags: -echo "%GTAGS_CMD%" -call %GTAGS_CMD% -echo Done. -goto :EOF -rem ========================================== -rem USAGE -rem ========================================== - -:Usage -echo Usage: -echo %~n0 ^<options^> -echo. -echo -e [exe=gtags]: The gtags executable to run. -echo -L [cmd=]: The file list command to run -echo. - diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/plat/win32/update_scopedb.cmd b/.config/nvim/pack/bundle/start/vim-gutentags/plat/win32/update_scopedb.cmd @@ -1,120 +0,0 @@ -@echo off -setlocal EnableExtensions EnableDelayedExpansion - -rem ========================================== -rem PARSE ARGUMENTS -rem ========================================== - -set CSCOPE_EXE=cscope -set CSCOPE_ARGS= -set DB_FILE=cscope.out -set FILE_LIST_CMD= -set LOG_FILE= -set BUILD_INVERTED_INDEX=0 - -:ParseArgs -if [%1]==[] goto :DoneParseArgs -if [%1]==[-e] ( - set CSCOPE_EXE=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-f] ( - set DB_FILE=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-p] ( - set PROJ_ROOT=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-L] ( - set FILE_LIST_CMD=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-l] ( - set LOG_FILE=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-I] ( - set BUILD_INVERTED_INDEX=1 - goto :LoopParseArgs -) -echo Invalid Argument: %1 -goto :Usage - -:LoopParseArgs -shift -goto :ParseArgs - -:DoneParseArgs - - -rem ========================================== -rem GENERATE DATABASE -rem ========================================== - -if [%LOG_FILE%]==[] set LOG_FILE=CON - -echo Locking db file > %LOG_FILE% -echo locked > "%DB_FILE%.lock" - -echo Running cscope >> %LOG_FILE% -if NOT ["%FILE_LIST_CMD%"]==[""] ( - if ["%PROJECT_ROOT%"]==["."] ( - for /F "usebackq delims=" %%F in (`%FILE_LIST_CMD%`) do @echo "%%F">%DB_FILE%.files - ) else ( - rem Potentially useful: - rem http://stackoverflow.com/questions/9749071/cmd-iterate-stdin-piped-from-another-command - for /F "usebackq delims=" %%F in (`%FILE_LIST_CMD%`) do @echo "%PROJECT_ROOT%\%%F">%DB_FILE%.files - ) -) ELSE ( - for /F "usebackq delims=" %%F in (`dir /S /B /A-D .`) do @echo "%%F">%DB_FILE%.files -) - -set FILESIZE=0 -for /F %%F in ("%DB_FILE%.files") do set FILESIZE=%%~zF -if %FILESIZE% EQU 0 ( - echo There is no files to generate cscope DB - goto :EOF -) - -set CSCOPE_ARGS=%CSCOPE_ARGS% -i %DB_FILE%.files -if ["%BUILD_INVERTED_INDEX%"]==["1"] ( - set CSCOPE_ARGS=%CSCOPE_ARGS% -q -) -"%CSCOPE_EXE%" %CSCOPE_ARGS% -b -k -f "%DB_FILE%" -if ERRORLEVEL 1 ( - echo ERROR: Cscope executable returned non-zero code. >> %LOG_FILE% -) - -echo Unlocking db file >> %LOG_FILE% -del /F "%DB_FILE%.files" "%DB_FILE%.lock" -if ERRORLEVEL 1 ( - echo ERROR: Unable to remove file lock. >> %LOG_FILE% -) - -echo Done. >> %LOG_FILE% - -goto :EOF - - -rem ========================================== -rem USAGE -rem ========================================== - -:Usage -echo Usage: -echo %~n0 ^<options^> -echo. -echo -e [exe=cscope]: The cscope executable to run -echo -f [file=cscope.out]: The path to the database file to create -echo -p [dir=]: The path to the project root -echo -L [cmd=]: The file list command to run -echo -l [log=]: The log file to output to -echo -I: Builds an inverted index -echo. - diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/plat/win32/update_tags.cmd b/.config/nvim/pack/bundle/start/vim-gutentags/plat/win32/update_tags.cmd @@ -1,194 +0,0 @@ -@echo off -setlocal EnableExtensions EnableDelayedExpansion - -rem ========================================== -rem PARSE ARGUMENTS -rem ========================================== - -set CTAGS_EXE=ctags -set CTAGS_ARGS= -set TAGS_FILE=tags -set PROJECT_ROOT= -set FILE_LIST_CMD= -set FILE_LIST_CMD_IS_ABSOLUTE=0 -set UPDATED_SOURCE= -set POST_PROCESS_CMD= -set PAUSE_BEFORE_EXIT=0 -set LOG_FILE= - -:ParseArgs -if [%1]==[] goto :DoneParseArgs -if [%1]==[-e] ( - set CTAGS_EXE=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-x] ( - set CTAGS_ARGS=%CTAGS_ARGS% --exclude=%2 - shift - goto :LoopParseArgs -) -if [%1]==[-t] ( - set TAGS_FILE=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-p] ( - set PROJECT_ROOT=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-L] ( - set FILE_LIST_CMD=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-A] ( - set FILE_LIST_CMD_IS_ABSOLUTE=1 - goto :LoopParseArgs -) -if [%1]==[-s] ( - set UPDATED_SOURCE=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-c] ( - set PAUSE_BEFORE_EXIT=1 - goto :LoopParseArgs -) -if [%1]==[-l] ( - set LOG_FILE=%~2 - shift - goto :LoopParseArgs -) -if [%1]==[-o] ( - set CTAGS_ARGS=%CTAGS_ARGS% --options=%2 - shift - goto :LoopParseArgs -) -if [%1]==[-O] ( - set CTAGS_ARGS=%CTAGS_ARGS% %~2 - shift - goto :LoopParseArgs -) -if [%1]==[-P] ( - set POST_PROCESS_CMD=%~2 - shift - goto :LoopParseArgs -) -echo Invalid Argument: %1 -goto :Usage - -:LoopParseArgs -shift -goto :ParseArgs - -:DoneParseArgs - - -rem ========================================== -rem GENERATE TAGS -rem ========================================== - -if [%LOG_FILE%]==[] set LOG_FILE=CON - -echo Locking tags file... > %LOG_FILE% -echo locked > "%TAGS_FILE%.lock" - -set INDEX_WHOLE_PROJECT=1 -if exist "%TAGS_FILE%" ( - if not ["%UPDATED_SOURCE%"]==[""] ( - echo Removing references to: %UPDATED_SOURCE% >> %LOG_FILE% - echo findstr /V /C:"%UPDATED_SOURCE%" "%TAGS_FILE%" ^> "%TAGS_FILE%.temp" >> %LOG_FILE% - findstr /V /C:"%UPDATED_SOURCE%" "%TAGS_FILE%" > "%TAGS_FILE%.temp" - set CTAGS_ARGS=%CTAGS_ARGS% --append "%UPDATED_SOURCE%" - set INDEX_WHOLE_PROJECT=0 - ) -) -if ["%INDEX_WHOLE_PROJECT%"]==["1"] ( - if not ["%FILE_LIST_CMD%"]==[""] ( - echo Running file list command >> %LOG_FILE% - set use_raw_list=0 - if ["%PROJECT_ROOT%"]==["."] set use_raw_list=1 - if ["%FILE_LIST_CMD_IS_ABSOLUTE%"]==["1"] set use_raw_list=1 - rem No idea why we need to use delayed expansion here to make it work :( - if ["!use_raw_list!"]==["1"] ( - echo call %FILE_LIST_CMD% ^> %TAGS_FILE%.files >> %LOG_FILE% - call %FILE_LIST_CMD% > %TAGS_FILE%.files - ) else ( - rem Potentially useful: - rem http://stackoverflow.com/questions/9749071/cmd-iterate-stdin-piped-from-another-command - echo call %FILE_LIST_CMD% -- with loop for prepending project root >> %LOG_FILE% - type NUL > %TAGS_FILE%.files - for /F "usebackq delims=" %%F in (`%FILE_LIST_CMD%`) do @echo %PROJECT_ROOT%\%%F >> %TAGS_FILE%.files - ) - set CTAGS_ARGS=%CTAGS_ARGS% -L %TAGS_FILE%.files - ) else ( - set CTAGS_ARGS=%CTAGS_ARGS% "%PROJECT_ROOT%" - ) -) - -echo Running ctags >> %LOG_FILE% -echo call "%CTAGS_EXE%" -f "%TAGS_FILE%.temp" %CTAGS_ARGS% >> %LOG_FILE% -call "%CTAGS_EXE%" -f "%TAGS_FILE%.temp" %CTAGS_ARGS% >> %LOG_FILE% 2>&1 -if ERRORLEVEL 1 ( - echo ERROR: Ctags executable returned non-zero code. >> %LOG_FILE% - goto :Unlock -) - -if not ["%POST_PROCESS_CMD%"]==[""] ( - echo Running post process >> %LOG_FILE% - echo call %POST_PROCESS_CMD% %TAGS_FILE%.temp >> %LOG_FILE% - call %POST_PROCESS_CMD% %TAGS_FILE%.temp >> %LOG_FILE% 2>&1 - if ERRORLEVEL 1 ( - echo ERROR: Post process returned non-zero code. >> %LOG_FILE% - goto :Unlock - ) -) - -echo Replacing tags file >> %LOG_FILE% -echo move /Y "%TAGS_FILE%.temp" "%TAGS_FILE%" >> %LOG_FILE% -move /Y "%TAGS_FILE%.temp" "%TAGS_FILE%" >> %LOG_FILE% 2>&1 -if ERRORLEVEL 1 ( - echo ERROR: Unable to rename temp tags file into actual tags file. >> %LOG_FILE% - goto :Unlock -) - -:Unlock -echo Unlocking tags file... >> %LOG_FILE% -del /F "%TAGS_FILE%.files" "%TAGS_FILE%.lock" -if ERRORLEVEL 1 ( - echo ERROR: Unable to remove file lock. >> %LOG_FILE% -) - -echo Done. >> %LOG_FILE% -if [%PAUSE_BEFORE_EXIT%]==[1] ( - pause -) - -goto :EOF - - -rem ========================================== -rem USAGE -rem ========================================== - -:Usage -echo Usage: -echo %~n0 ^<options^> -echo. -echo -e [exe=ctags]: The ctags executable to run -echo -t [file=tags]: The path to the ctags file to update -echo -p [dir=]: The path to the project root -echo -l [log=]: The log file to output to -echo -L [cmd=]: The file list command to run -echo -A: Specifies that the file list command returns -echo absolute paths -echo -s [file=]: The path to the source file that needs updating -echo -x [pattern=]: A pattern of files to exclude -echo -o [options=]: An options file to read additional options from -echo -O [params=]: Parameters to pass to ctags -echo -P [cmd=]: Post process command to run on the tags file -echo -c: Ask for confirmation before exiting -echo. - diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/plugin/gutentags.vim b/.config/nvim/pack/bundle/start/vim-gutentags/plugin/gutentags.vim @@ -1,120 +0,0 @@ -" 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_project_root = get(g:, 'gutentags_exclude_project_root', - \['/usr/local', '/opt/homebrew', '/home/linuxbrew/.linuxbrew']) - -let g:gutentags_exclude_filetypes = get(g:, 'gutentags_exclude_filetypes', []) -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() - autocmd VimLeave * call gutentags#on_vim_leave() -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 - -" }}} - diff --git a/.config/nvim/pack/bundle/start/vim-gutentags/res/ctags_recursive.options b/.config/nvim/pack/bundle/start/vim-gutentags/res/ctags_recursive.options @@ -1,2 +0,0 @@ ---recurse=yes -