Mercurial > vim-gutentags
diff autoload/gutentags.vim @ 136:286e5b3095d0
Allow restricting tag generation to files listed by custom commands
This adds a new setting, g:gutentags_file_list_command, which specifies
command(s) to use to list files for which tags should be generated,
instead of recursively examining all files within the project root.
This is useful in projects using source control to restrict tag
generation to only files tracked in the repository.
This setting is conceptually similar to CtrlP's ctrlp_user_command
option.
This implements the feature requested in
https://github.com/ludovicchabant/vim-gutentags/issues/90
author | Stephen Kent <smkent@smkent.net> |
---|---|
date | Fri, 22 Jul 2016 19:25:05 -0700 |
parents | 04288637e595 |
children | 7bc4df0225d1 3459a2522a3b e59321cbaff7 |
line wrap: on
line diff
--- a/autoload/gutentags.vim Fri Jul 22 19:25:01 2016 -0700 +++ b/autoload/gutentags.vim Fri Jul 22 19:25:05 2016 -0700 @@ -78,6 +78,29 @@ let s:known_projects[a:path] = l:result endfunction +function! gutentags#validate_cmd(cmd) abort + if !empty(a:cmd) && executable(split(a:cmd)[0]) + return a:cmd + endif + return "" +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 getftype(a:path . '/' . marker) != "" + return gutentags#validate_cmd(file_list_cmd) + endif + endfor + endif + 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