diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-08-06 06:51:33 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-08-06 06:51:33 +0100 |
| commit | 1119d00a965294c3070ccd0fc25240045f729b0c (patch) | |
| tree | 04da90d90e7c03fc6e367ec80ff6d4cad975373f | |
| parent | 5b7b6eebafc025a33a2fba39f1873d4d09a04d86 (diff) | |
Use shell-candidates for ctags completion, and cache tag names in a separate file
| -rw-r--r-- | rc/base/ctags.kak | 12 |
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{ |
