34 lines
1.1 KiB
Text
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
|
|
}
|
|
|
|
∴
|