AutoYADM commit: 2025-07-18 16:33:39
This commit is contained in:
parent
5cf0eb449d
commit
6660244bdf
1 changed files with 44 additions and 7 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
∴
|
∴
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue