AutoYADM commit: 2025-07-18 16:33:39

This commit is contained in:
Daniel Fichtinger 2025-07-18 16:33:39 -04:00
parent 5cf0eb449d
commit 6660244bdf

View file

@ -1,34 +1,71 @@
provide-module root %∴ provide-module root %∴
declare-option str-list root_globs .git .kakrc kakrc declare-option str-list root_globs .git .kakrc kakrc
declare-option str project_root %sh{ echo "$PWD" } declare-option str root_path %sh{ echo "$PWD" }
declare-option -hidden str root_prev_pwd %opt{root_path}
define-command root-discover %{ define-command root-discover %{
evaluate-commands %sh{ evaluate-commands %sh{
globs="$kak_opt_root_globs" globs="$kak_opt_root_globs"
dir="$PWD" dir="$PWD"
root="$dir"
while [ "$dir" != "/" ]; do while [ "$dir" != "/" ]; do
for glob in $globs; do for glob in $globs; do
match=$(fd -H -td -1 --glob "$glob" "$dir" --max-depth 1 2>/dev/null | head -n1) match=$(fd -H -td -1 --glob "$glob" "$dir" --max-depth 1 2>/dev/null | head -n1)
if [ -n "$match" ]; then if [ -n "$match" ]; then
root="$match" root="$(dirname "$match")"
break break
fi fi
done done
dir="$(dirname "$dir")" dir="$(dirname "$dir")"
done done
printf 'set-option global project_root "%s"\n' "$root" printf 'set-option global root_path "%s"\n' "$root"
printf 'echo "Discovered root: %s"\n' "$root"
} }
} }
# project-specific configuration # project-specific configuration
hook global BufCreate (.*/)?(\.kakrc\.local|\.kakrc\.local|\.kakrc) %{ hook global BufCreate (.*/)?(\.kakrc\.local|\.kakrc\.local|\.kakrc) %{
set-option buffer filetype kak set-option buffer filetype kak
} }
try %{ source .kakrc } catch %{ define-command root-load-kakrc %{
try %{ source .kakrc.local } catch %{ try %{ source .local.kakrc } } try %{ source .kakrc } catch %{
try %{ source .kakrc.local } catch %{ try %{ source .local.kakrc } }
}
} }
hook global KakBegin .* %{ define-command -hidden root-cd-root-impl %{
# TODO: discover project root set-option global root_prev_pwd %sh{ echo "$PWD" }
change-directory %opt{root_path}
echo "CWD: %opt{root_path}"
}
define-command -hidden root-cd-return-impl %{
change-directory %opt{root_prev_pwd}
echo "CWD: %opt{root_prev_pwd}"
}
define-command root-cd %sh{
if [ "$PWD" != "$kak_opt_root_path" ]; then
echo "root-cd-root-impl"
else
echo "root-cd-return-impl"
fi
}
define-command -params 1 root-edit %{
edit %exp{%opt{root_path}/%arg{1}}
}
define-command just %{
root-edit justfile
}
define-command pyproject %{
root-edit pyproject.toml
}
define-command readme %{
root-edit README.md
}
define-command kakrc %{
root-edit .kakrc
} }