diff --git a/.config/fish/functions/kak-session.fish b/.config/fish/functions/kak-session.fish index 68112792..188bdb6f 100644 --- a/.config/fish/functions/kak-session.fish +++ b/.config/fish/functions/kak-session.fish @@ -1,6 +1,11 @@ -function kak-session -w kak --description "kakoune where sessions are derived from parent git dirs" +function kak-session -w kak --description "kakoune where sessions are derived from parent git dirs. First arg may be -nokakdaemon." # TODO(enricozb): https://github.com/enricozb/tabs.kak/issues/12 + if test "$argv[1]" = -nokakdaemon + set -f nokakdaemon + set argv $argv[2..] + end + set files # all arguments without a `-` prefix set flags # all arguments with a `-` prefix @@ -35,6 +40,32 @@ function kak-session -w kak --description "kakoune where sessions are derived fr return 1 end + # function newsession + # if test "$argv[1]" = -nokakdaemon + # set -f nokakdaemon + # set argv $argv[2..] + # end + # set session_id $argv[1] + # set argv $argv[2..] + # if not command kak -l | rg -xqF "$session_id" + # set fifo_dir (mktemp -d --suffix=kak-init.XXXXXX) + # set fifo "$fifo_dir/fifo" + # mkfifo "$fifo" + + # if not set -fq nokakdaemon + # setsid kak -d -s "$session_id" -E "cd %[$kakroot]; echo -to-file $fifo ready" & + + # # once $fifo has data, the kakoune server has initialized. + # cat $fifo >/dev/null + + # command rm -r "$fifo_dir" + # command kak -c "$session_id" $argv + # else + # command kak -s "$session_id" -e "cd %[$kakroot]" $argv + # end + # end + # end + set kakroot (fdup '\.kakroot|\.kakrc.local|\.local.kakrc|kakrc' $files[1]) if test -n "$kakroot" set session_id (echo -n "$(path basename "$kakroot")" | tr --complement '[:alpha:]_-' '-') @@ -48,7 +79,7 @@ function kak-session -w kak --description "kakoune where sessions are derived fr set fifo "$fifo_dir/fifo" mkfifo "$fifo" - if not set -gq nokakdaemon + if not set -fq nokakdaemon setsid kak -d -s "$session_id" -E "cd %[$kakroot]; echo -to-file $fifo ready" & # once $fifo has data, the kakoune server has initialized. @@ -80,11 +111,11 @@ function kak-session -w kak --description "kakoune where sessions are derived fr set fifo "$fifo_dir/fifo" mkfifo "$fifo" - if not set -gq nokakdaemon + if not set -fq nokakdaemon setsid kak -d -s "$session_id" -E "cd %[$git_dir]; echo -to-file $fifo ready" & cat $fifo >/dev/null command rm -r "$fifo_dir" - command kak -c "$session_id" -e 'try%{ delete-buffer *scratch* }' $flags $files + command kak -c "$session_id" -e 'try %{ delete-buffer *scratch* }' $flags $files else command kak -s "$session_id" -e "cd %[$git_dir]" $flags $files end diff --git a/.config/fish/functions/kakrc.fish b/.config/fish/functions/kakrc.fish index c7e387aa..b40105fc 100644 --- a/.config/fish/functions/kakrc.fish +++ b/.config/fish/functions/kakrc.fish @@ -1,6 +1,6 @@ function kakrc --description "Edit kakrc. -c to force a new session." if test "$argv[1]" != -c || test "$argv[1]" != new - kak-session ~/.config/kak/kakrc + kak-session -nokakdaemon ~/.config/kak/kakrc else kak -e 'cd ~/.config/kak' ~/.config/kak/kakrc end