-" 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.
+vim9script
-function! ctags#do(lang, onlyCmd, verbose) abort
- let dst = tagfiles()
- if len(dst) == 0
+# 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.
+
+export def Do(lang: string, onlyCmd: bool, verbose: bool)
+ var dsts = tagfiles()
+ if len(dsts) == 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], "/")
+ var dst = sort(dsts, (a, b) => len(a) > len(b) ? 1 : len(a) == len(b) ? 0 : -1)[0]
+ var src = "/" .. join(split(dst, "/")[: -3], "/")
if dst[0] != "/"
- let dst = getcwd() . "/.tags/tags"
- let src = getcwd()
+ dst = getcwd() .. "/.tags/tags"
+ 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
+ var cmdline = [
+ "uctags",
+ "--languages=" .. lang,
+ "--python-kinds=-i",
+ "--c++-kinds=+p",
+ "--recurse",
+ ]
+ if verbose == v:true | cmdline += ["--verbose"] | endif
+ cmdline += ["-f", dst, src]
+ if onlyCmd == v:true
echo join(cmdline, " ")
return
endif
- execute "!" . join(cmdline, " ")
- if a:verbose != v:true | redraw! | endif
-endfunction
+ execute "!" .. join(cmdline, " ")
+ if verbose != v:true | redraw! | endif
+enddef