dotfiles/.config/kak/autoload/local-kakrc.kak

68 lines
2.1 KiB
Text

provide-module local-kakrc %—
declare-option str local_kakrc_trusted %exp{%val{config}/local_kakrc_trusted.txt}
# ensures that the file exists
define-command -hidden local-kakrc-ensure-file %{
nop %sh{
if [ ! -f "$kak_opt_local_kakrc_trusted" ]; then
mkdir -p "$kak_opt_local_kakrc_trusted"
touch "$kak_opt_local_kakrc_trusted"
fi
}
}
define-command local-kakrc-load-if-trusted %{
# first we check if the .kakrc exists
evaluate-commands %sh{
if [ -f .kakrc ]; then
notify-send "Found it!"
# check if it's a trusted dir
if grep -q "$PWD" "$kak_opt_local_kakrc_trusted"; then
echo "source .kakrc"
else
echo "info -title 'local-kakrc' 'Local .kakrc found, but directory is untrusted.'"
fi
fi
}
}
define-command -params 0..1 local-kakrc-add-trusted %{
nop %sh{
if [ "$#" -eq 0 ]; then
arg="$PWD"
else
arg="$(realpath "$1")"
fi
echo "local-kakrc-ensure-file">"$kak_command_fifo"
printf '%s\n' "$arg">"$kak_opt_local_kakrc_trusted"
}
}
define-command -params 0..1 local-kakrc-rm-trusted %{
evaluate-commands %sh{
if [ "$#" -eq 0 ]; then
arg="$PWD"
else
arg="$(realpath "$1")"
fi
if [ ! -f "$kak_opt_local_kakrc_trusted" ]; then
echo "fail local_kakrc_trusted not found!"
exit 1
fi
printf '%s\n' "$arg">"$kak_opt_local_kakrc_trusted"
}
}
complete-command local-kakrc-add-trusted shell-script-candidates %{
fd -td --exclude '.git' --base-directory "$PWD" .
}
# syntax highlighting
hook global BufCreate (.*/)?\.kakrc %{
set-option buffer filetype kak
}
# load proj. config
define-command root-load-kakrc %{
try %{ source %exp{%opt{root_path}/.kakrc} }
}