Add a rc/ctags.kak for a :tag implementation using exuberant ctags
This commit is contained in:
parent
478581cc46
commit
2781056ce6
26
src/rc/ctags.kak
Normal file
26
src/rc/ctags.kak
Normal file
|
@ -0,0 +1,26 @@
|
|||
# Kakoune Exuberant CTags support script
|
||||
#
|
||||
# This script requires the readtags command available in ctags source but
|
||||
# not installed by default
|
||||
|
||||
def -shell-params \
|
||||
-shell-completion 'readtags -p "$1" | cut -f 1 | sort | uniq' \
|
||||
tag \
|
||||
%{ %sh{
|
||||
if [[ -z "$1" ]]; then tagname=${kak_selection}; else tagname=$1; fi
|
||||
matches=$(readtags ${tagname})
|
||||
if [[ -z "${matches}" ]]; then
|
||||
echo "echo tag not found ${tagname}"
|
||||
else
|
||||
menuparam=$(readtags ${tagname} | perl -i -ne '
|
||||
/([^\t]+)\t([^\t]+)\t\/\^(.*)\$\// and print "%{$2 [$3]} %{try %{ edit %{$2}; exec %{%s\\Q$3<ret>} } catch %{ echo %{unable to find tag} } } ";
|
||||
/([^\t]+)\t([^\t]+)\t(\d+)/ and print "%{$2:$3} %{edit %{$2}; exec %{$3g}} ";
|
||||
')
|
||||
|
||||
if [[ -z "${menuparam}" ]]; then
|
||||
echo "echo no such tag ${tagname}";
|
||||
else
|
||||
echo "menu -auto-single ${menuparam//$'\n'/ }";
|
||||
fi
|
||||
fi
|
||||
}}
|
Loading…
Reference in New Issue
Block a user