From 6660244bdf1b2a4a21c635023bcede0267f12088 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Fri, 18 Jul 2025 16:33:39 -0400 Subject: [PATCH] AutoYADM commit: 2025-07-18 16:33:39 --- .config/kak/autoload/root.kak | 51 ++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/.config/kak/autoload/root.kak b/.config/kak/autoload/root.kak index 0cfa3914..cb4f585c 100644 --- a/.config/kak/autoload/root.kak +++ b/.config/kak/autoload/root.kak @@ -1,34 +1,71 @@ provide-module root %∴ 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 %{ 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="$match" + root="$(dirname "$match")" break fi done dir="$(dirname "$dir")" 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 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 } } + define-command root-load-kakrc %{ + try %{ source .kakrc } catch %{ + try %{ source .kakrc.local } catch %{ try %{ source .local.kakrc } } + } } - hook global KakBegin .* %{ - # TODO: discover project root + 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 } ∴