ctags.kak: rename gentags to ctags-generate and add ctags-update
Both use proper locking of the tag file, and ctags-update can update the tags file for a single file.
This commit is contained in:
parent
bd2bf3a6a5
commit
9fe19fa72e
26
rc/ctags.kak
26
rc/ctags.kak
|
@ -59,17 +59,37 @@ def ctags-enable-autoinfo -docstring "Automatically display ctags information ab
|
||||||
|
|
||||||
def ctags-disable-autoinfo -docstring "Disable automatic ctags information displaying" %{ rmhooks window ctags-autoinfo }
|
def ctags-disable-autoinfo -docstring "Disable automatic ctags information displaying" %{ rmhooks window ctags-autoinfo }
|
||||||
|
|
||||||
decl str ctagsopts "-R ."
|
decl str ctagsopts "-R"
|
||||||
|
decl str ctagspaths "."
|
||||||
|
|
||||||
def gentags -docstring 'Generate tag file asynchronously' %{
|
def ctags-generate -docstring 'Generate tag file asynchronously' %{
|
||||||
echo -color Information "launching tag generation in the background"
|
echo -color Information "launching tag generation in the background"
|
||||||
%sh{ (
|
%sh{ (
|
||||||
if ctags -f .tags.kaktmp ${kak_opt_ctagsopts}; then
|
while ! mkdir .tags.kaklock 2>/dev/null; do sleep 1; done
|
||||||
|
trap 'rmdir .tags.kaklock' EXIT
|
||||||
|
|
||||||
|
if ctags -f .tags.kaktmp ${kak_opt_ctagsopts} ${kak_opt_ctagspaths}; then
|
||||||
mv .tags.kaktmp tags
|
mv .tags.kaktmp tags
|
||||||
msg="tags generation complete"
|
msg="tags generation complete"
|
||||||
else
|
else
|
||||||
msg="tags generation failed"
|
msg="tags generation failed"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "eval -client $kak_client echo -color Information '${msg}'" | kak -p ${kak_session}
|
echo "eval -client $kak_client echo -color Information '${msg}'" | kak -p ${kak_session}
|
||||||
) > /dev/null 2>&1 < /dev/null & }
|
) > /dev/null 2>&1 < /dev/null & }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def update-tags -docstring 'Update tags for the given file' %{
|
||||||
|
%sh{ (
|
||||||
|
while ! mkdir .tags.kaklock 2>/dev/null; do sleep 1; done
|
||||||
|
trap 'rmdir .tags.kaklock' EXIT
|
||||||
|
|
||||||
|
if ctags -f .file_tags.kaktmp ${kak_opt_ctagsopts} $kak_bufname; then
|
||||||
|
grep -Fv "$(printf '\t%s\t' "$kak_bufname")" tags | grep -v '^!' | sort --merge - .file_tags.kaktmp > .tags.kaktmp
|
||||||
|
mv .tags.kaktmp tags
|
||||||
|
msg="tags updated for $kak_bufname"
|
||||||
|
else
|
||||||
|
msg="tags update failed for $kak_bufname"
|
||||||
|
fi
|
||||||
|
) > /dev/null 2>&1 < /dev/null & }
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user