Treat tags paths as relative to the tags file

Fixes #662
This commit is contained in:
Maxime Coste 2016-05-24 22:48:15 +01:00
parent 9b01149dc3
commit f9260a6d3a

View File

@ -14,19 +14,18 @@ def -params 0..1 \
tag \ tag \
%{ %sh{ %{ %sh{
export tagname=${1:-${kak_selection}} export tagname=${1:-${kak_selection}}
(
for tags in $(printf %s\\n "${kak_opt_ctagsfiles}" | tr ':' '\n'); do for tags in $(printf %s\\n "${kak_opt_ctagsfiles}" | tr ':' '\n'); do
readtags -t "${tags}" ${tagname} export tagroot="$(readlink -f $(dirname "$tags"))/"
done readtags -t "${tags}" ${tagname} | awk -F '\t|\n' -e '
) | awk -F '\t|\n' -e '
/[^\t]+\t[^\t]+\t\/\^.*\$?\// { /[^\t]+\t[^\t]+\t\/\^.*\$?\// {
re=$0; re=$0;
sub(".*\t/\\^", "", re); sub("\\$?/$", "", re); gsub("(\\{|\\}|\\\\E).*$", "", re); sub(".*\t/\\^", "", re); sub("\\$?/$", "", re); gsub("(\\{|\\}|\\\\E).*$", "", re);
keys=re; gsub(/</, "<lt>", keys); gsub(/\t/, "<c-v><c-i>", keys); keys=re; gsub(/</, "<lt>", keys); gsub(/\t/, "<c-v><c-i>", keys);
out = out " %{" $2 " {MenuInfo}" re "} %{eval -collapse-jumps %{ try %{ edit %{" $2 "}; exec %{/\\Q" keys "<ret>vc} } catch %{ echo %{unable to find tag} } } }" out = out " %{" $2 " {MenuInfo}" re "} %{eval -collapse-jumps %{ try %{ edit %{" $2 "}; exec %{/\\Q" keys "<ret>vc} } catch %{ echo %{unable to find tag} } } }"
} }
/[^\t]+\t[^\t]+\t[0-9]+/ { out = out " %{" $2 ":" $3 "} %{eval -collapse-jumps %{ edit %{" $2 "} %{" $3 "}}}" } /[^\t]+\t[^\t]+\t[0-9]+/ { out = out " %{" $2 ":" $3 "} %{eval -collapse-jumps %{ edit %{" ENVIRON["tagroot"] $2 "} %{" $3 "}}}" }
END { print length(out) == 0 ? "echo -color Error no such tag " ENVIRON["tagname"] : "menu -markup -auto-single " out }' END { print length(out) == 0 ? "echo -color Error no such tag " ENVIRON["tagname"] : "menu -markup -auto-single " out }'
done
}} }}
def tag-complete -docstring "Insert completion candidates for the current selection into the buffer's local variables" %{ eval -draft %{ def tag-complete -docstring "Insert completion candidates for the current selection into the buffer's local variables" %{ eval -draft %{