provide-module root %∴ declare-option str-list root_globs .git .kakrc kakrc declare-option str root_path %sh{ echo "$PWD" } declare-option -hidden str root_prev_pwd %opt{root_path} define-command root-discover %{ evaluate-commands %sh{ globs="$kak_opt_root_globs" dir="$PWD" root="$dir" 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="$(dirname "$match")" break fi done dir="$(dirname "$dir")" done printf 'set-option global root_path "%s"\n' "$root" printf 'echo "Discovered root: %s"\n' "$root" } } # project-specific configuration hook global BufCreate (.*/)?(\.kakrc\.local|\.kakrc\.local|\.kakrc) %{ set-option buffer filetype kak } define-command root-load-kakrc %{ try %{ source .kakrc } catch %{ try %{ source .kakrc.local } catch %{ try %{ source .local.kakrc } } } } define-command -hidden root-cd-root-impl %{ 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 } ∴