z_mirror/dotfiles
git clone https://git.raiguard.me/z_mirror/dotfiles
464c06e
noctalia
1#!/usr/bin/env sh 2 3if [ -f "/usr/local/bin/kak" ]; then 4 kak="exec /usr/local/bin/kak" 5else 6 kak="exec /usr/bin/kak" 7fi 8 9# Don't do stuff if we are being piped into 10if [ ! -t 0 ]; then 11 echo "$(cat)" | $kak "$@" 12 exit 13fi 14 15# Don't do stuff if any flags were passed to kak 16case "$1" in 17 -L) 18 shift 19 $kak "$@" 20 exit 21 ;; 22 -*) 23 $kak "$@" 24 exit 25 ;; 26 # Passing in a line number 27 +*) 28 $kak "$@" 29 exit 30 ;; 31esac 32 33# Change filename to absolute path 34# This only works with the first one, but that's fine 35if [ -n "$1" ]; then 36 set -- "$(realpath $1)" 37fi 38 39# Attempt to root by git repo, or by .kakrc file 40basedir=$(git rev-parse --show-toplevel 2> /dev/null) 41if [ -n "$basedir" ]; then 42 # Set session name 43 session=$(basename "$basedir" | sed 's/\./-/g') 44 # Change to project root dir 45 cd "$basedir" 46else 47 oldpwd="$PWD" 48 while [ "$PWD" != "/" ]; do 49 if [ -f .kakrc ] || [ -f .editorconfig ]; then 50 session=$(basename "$PWD" | sed 's/\./-/g') 51 break 52 fi 53 cd .. 54 done 55 # If not found, revert to original dir 56 if [ -z "$session" ]; then 57 cd "$oldpwd" 58 fi 59fi 60 61sessions="$($kak -l)" 62if $(echo "$sessions" | grep -q "(dead)"); then 63 echo "Clearing dead sessions" 64 $kak -clear 65 sessions="$($kak -l)" 66fi 67 68if [ -z "$session" ]; then 69 $kak "$@" 70 exit 71fi 72 73if $(echo "$sessions" | grep -q "^$session$"); then 74 $kak -c $session "$@" 75else 76 $kak -s $session "$@" 77fi