dotfiles/.config/kak/autoload/root.kak

34 lines
1.1 KiB
Text

provide-module root %∴
declare-option str-list root_globs .git .kakrc kakrc
declare-option str project_root %sh{ echo "$PWD" }
define-command root-discover %{
evaluate-commands %sh{
globs="$kak_opt_root_globs"
dir="$PWD"
while [ "$dir" != "/" ]; do
for glob in $globs; do
match=$(fd -H -td -1 --glob "$glob" "$dir" --max-depth 1 2>/dev/null | head -n1)
if [ -n "$match" ]; then
root="$match"
break
fi
done
dir="$(dirname "$dir")"
done
printf 'set-option global project_root "%s"\n' "$root"
}
}
# project-specific configuration
hook global BufCreate (.*/)?(\.kakrc\.local|\.kakrc\.local|\.kakrc) %{
set-option buffer filetype kak
}
try %{ source .kakrc } catch %{
try %{ source .kakrc.local } catch %{ try %{ source .local.kakrc } }
}
hook global KakBegin .* %{
# TODO: discover project root
}