-" Universal Ctags creator
-" Maintainer: Sergey Matveev <stargrave@stargrave.org>
-" License: GNU General Public License version 3 of the License or later
-"
-" Create "tags" file in your project's root first.
-" Then :Ctags LANG to fill it.
-
-if exists('*<SID>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/tags"
- let src = getcwd()
- endif
- let cmdline = [
- \"uctags",
- \"--languages=" . a:lang,
- \"--python-kinds=-i",
- \"--c++-kinds=+p",
- \"--recurse",
- \]
- if a:verbose == v:true | let cmdline += ["--verbose"] | endif
- let cmdline += ["-f", dst, src]
- if a:onlyCmd == v:true
- echo join(cmdline, " ")
- return
- endif
- execute "!" . join(cmdline, " ")
- if a:verbose != v:true | redraw! | endif
-endfunction
-
-command! -nargs=1 Ctags silent call s:Ctags(<f-args>, v:false, v:false)
-command! -nargs=1 Ctagsv silent call s:Ctags(<f-args>, v:true, v:false)
-command! -nargs=1 Ctagscmd call s:Ctags(<f-args>, v:true, v:true)
+if exists("*ctags#do") | finish | endif
+command! -nargs=1 Ctags silent call ctags#do(<f-args>, v:false, v:false)
+command! -nargs=1 Ctagsv silent call ctags#do(<f-args>, v:true, v:false)
+command! -nargs=1 Ctagscmd call ctags#do(<f-args>, v:true, v:true)