summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-08-06 06:51:33 +0100
committerMaxime Coste <frrrwww@gmail.com>2016-08-06 06:51:33 +0100
commit1119d00a965294c3070ccd0fc25240045f729b0c (patch)
tree04da90d90e7c03fc6e367ec80ff6d4cad975373f
parent5b7b6eebafc025a33a2fba39f1873d4d09a04d86 (diff)
Use shell-candidates for ctags completion, and cache tag names in a separate file
-rw-r--r--rc/base/ctags.kak12
1 files changed, 8 insertions, 4 deletions
diff --git a/rc/base/ctags.kak b/rc/base/ctags.kak
index 58995a9e..96c93f80 100644
--- a/rc/base/ctags.kak
+++ b/rc/base/ctags.kak
@@ -6,10 +6,14 @@
decl str-list ctagsfiles 'tags'
def -params 0..1 \
- -shell-completion '
- ( for tags in $(printf %s\\n "${kak_opt_ctagsfiles}" | tr \':\' \'\n\');
- do readtags -t "${tags}" -p "$1"
- done ) | cut -f 1 | sort | uniq' \
+ -shell-candidates '
+ ( for tags in $(printf %s\\n "${kak_opt_ctagsfiles}" | tr \':\' \'\n\'); do
+ namecache=$(dirname ${tags})/.kak.$(basename ${tags}).namecache
+ if [ -z "$(find ${namecache} -prune -newer ${tags})" ]; then
+ cat ${tags} | cut -f 1 | uniq > ${namecache}
+ fi
+ cat ${namecache}
+ done )' \
-docstring 'Jump to tag definition' \
tag \
%{ %sh{