X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=vim%2F.vim%2Fplugin%2Fctags.vim;h=268b27e4ea67e55ba7c6275a7492b3dca51d3c24;hb=c87a6c5de579ab6ae0e5d27b233b83bab85e17f6;hp=8f66a483025529b97ee4f9edbdf92debfcef9867;hpb=dd629970f623247819f0e68652341b32f7d72f7e;p=dotfiles.git diff --git a/vim/.vim/plugin/ctags.vim b/vim/.vim/plugin/ctags.vim index 8f66a48..268b27e 100644 --- a/vim/.vim/plugin/ctags.vim +++ b/vim/.vim/plugin/ctags.vim @@ -5,11 +5,18 @@ " Create "tags" file in your project's root first. " Then :Ctags LANG to fill it. -function! s:ctags(lang, onlyCmd, verbose) - let dst = tagfiles()[0] - let src = "/" . join(split(dst, "/")[:-2], "/") +if exists('*Ctags') | finish | endif + +function! s:Ctags(lang, onlyCmd, verbose) + let dst = tagfiles() + if len(dst) == 0 + echohl WarningMsg | echomsg "No tagfiles" | echohl None + return + endif + let dst = sort(dst, {a, b -> len(a) > len(b) ? 1 : len(a) == len(b) ? 0 : -1})[0] + let src = "/" . join(split(dst, "/")[:-3], "/") if dst[0] != "/" - let dst = getcwd() . "/tags" + let dst = getcwd() . "/.tags/tags" let src = getcwd() endif let cmdline = [ @@ -29,6 +36,6 @@ function! s:ctags(lang, onlyCmd, verbose) if a:verbose != v:true | redraw! | endif endfunction -command! -nargs=1 Ctags silent call s:ctags(, v:false, v:false) -command! -nargs=1 Ctagsv silent call s:ctags(, v:true, v:false) -command! -nargs=1 Ctagscmd call s:ctags(, v:true, v:true) +command! -nargs=1 Ctags silent call s:Ctags(, v:false, v:false) +command! -nargs=1 Ctagsv silent call s:Ctags(, v:true, v:false) +command! -nargs=1 Ctagscmd call s:Ctags(, v:true, v:true)