From f148c6748eed1552e42818d7ea1593fa22857b3d Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Sat, 19 Jul 2025 00:39:31 -0400 Subject: [PATCH] AutoYADM commit: 2025-07-19 00:39:31 --- .config/kak/autoload/local-kakrc.kak | 50 +++++++++++++++++++++++----- .config/kak/local_kakrc_trusted.txt | 1 - LICENSE | 19 ----------- 3 files changed, 41 insertions(+), 29 deletions(-) diff --git a/.config/kak/autoload/local-kakrc.kak b/.config/kak/autoload/local-kakrc.kak index 48be876a..f8bd71ce 100644 --- a/.config/kak/autoload/local-kakrc.kak +++ b/.config/kak/autoload/local-kakrc.kak @@ -6,7 +6,7 @@ provide-module local-kakrc %— } str local_kakrc_trusted %exp{%val{config}/local_kakrc_trusted.txt} declare-option -docstring %{ Whether to automatically load .kakrc if it's trusted. - Otherwise, you must load manually with local-kakrc-load. + Otherwise, you must load manually with local-kakrc-load-if-trusted. } bool local_kakrc_autoload false declare-option -docstring %{ Whether to use 'notify-send' for notifications. @@ -30,14 +30,21 @@ provide-module local-kakrc %— define-command -docstring %{ Local the .kakrc if it exists and is trusted. If it exists but isn't trusted, notify the user. - } local-kakrc-load %{ - # first we check if the .kakrc exists + } local-kakrc-load-if-trusted %{ evaluate-commands %sh{ + # first we check if the .kakrc exists if [ -f .kakrc ]; then + # check if it's trusted if grep -qFx "$PWD" "$kak_opt_local_kakrc_trusted"; then echo "source .kakrc" else - echo "info -title 'local-kakrc' 'Local .kakrc found, but directory is untrusted.'" + # notify otherwise + msg="Local .kakrc found, but directory is untrusted." + if [ "$kak_opt_local_kakrc_notify_send" = "false" ]; then + printf "info -title 'local-kakrc' '%s'\n" "$msg" + else + notify-send -h string:title:local-kakrc "$msg" + fi fi fi } @@ -48,13 +55,22 @@ provide-module local-kakrc %— provided, the current directory is used. } -params 0..1 local-kakrc-add-trusted %{ evaluate-commands %sh{ + # process arg (if any) if [ "$#" -eq 0 ]; then arg="$PWD" else arg="$(realpath "$1")" fi + # ensure the file exists echo "local-kakrc-ensure-file">"$kak_command_fifo" - printf 'info -title "local-kakrc" "Adding %s to trusted"' "$arg" + # notify user + msg="Adding $arg to trust list" + if [ "$kak_opt_local_kakrc_notify_send" = "false" ]; then + printf "info -title 'local-kakrc' '%s'\n" "$msg" + else + notify-send -h string:title:local-kakrc "$msg" + fi + # append to trust list printf '%s\n' "$arg">>"$kak_opt_local_kakrc_trusted" } } @@ -64,46 +80,62 @@ provide-module local-kakrc %— provided, the current directory is used. } -params 0..1 local-kakrc-rm-trusted %{ evaluate-commands %sh{ + # process arg (if any) if [ "$#" -eq 0 ]; then arg="$PWD" else arg="$(realpath "$1")" fi + # fail if no trust list + # (no point creating an empty one if it doesn't exist) if [ ! -f "$kak_opt_local_kakrc_trusted" ]; then echo "fail local_kakrc_trusted not found!" exit 1 fi + # create temp file temp="$(mktemp)" touch "$temp" - # check if path is in file + # check if given path is in file if grep -qFx "$arg" "$kak_opt_local_kakrc_trusted"; then # perform removal grep -vxF "$arg" "$kak_opt_local_kakrc_trusted" >"$temp" mv -f "$temp" "$kak_opt_local_kakrc_trusted" else - echo "info -title 'local-kakrc' 'No such trusted directory!'" + # notify user of failure + msg="No such trusted directory!" + if [ "$kak_opt_local_kakrc_notify_send" = "false" ]; then + printf "info -title 'local-kakrc' '%s'\n" "$msg" + else + notify-send -h string:title:local-kakrc "$msg" + fi + # clean up unused temp file rm "$temp" 2>/dev/null fi } } + # define completions for command complete-command local-kakrc-rm-trusted shell-script-candidates %{ cat "$kak_opt_local_kakrc_trusted" } + # define completions complete-command local-kakrc-add-trusted shell-script-candidates %{ + # any non-".git" directory is valid find . -type d -name .git -prune -o -type d -print | awk -F/ '$0 != "." { sub("^./", "", $0); print }' } - # syntax highlighting for .kakrc + # set up syntax highlighting for .kakrc files hook global BufCreate (.*/)?(\.kakrc) %{ set-option buffer filetype kak } + # register autoloading hook hook global -once KakBegin .* %{ + # only attempt loading if option is set evaluate-commands %sh{ if [ "$kak_opt_local_kakrc_autoload" = 'true' ]; then - local-kakrc-load + local-kakrc-load-if-trusted fi } } diff --git a/.config/kak/local_kakrc_trusted.txt b/.config/kak/local_kakrc_trusted.txt index 9de02730..e69de29b 100644 --- a/.config/kak/local_kakrc_trusted.txt +++ b/.config/kak/local_kakrc_trusted.txt @@ -1 +0,0 @@ -/tmp/kak-trusted diff --git a/LICENSE b/LICENSE index 93f2c2e0..e69de29b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,19 +0,0 @@ -Copyright (c) 2025 Daniel Fichtinger - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE.