#!/bin/sh root="$( set -e gitdir=$(git rev-parse --git-dir 2>/dev/null) set +e cd "$gitdir"/.. # This is horrible. git rev-parse --show-toplevel )" session_name="$(printf %s ${root##*/} | sed s/[^a-zA-Z0-9_-]/_/g)" if printf %s "$1" | grep -q '^[^+-][^:]\+:[0-9]\+'; then file=${1%:*} pos=${1#*:} shift set -- "+$pos" "$file" "$@" fi # "kak -l" hangs occasionally, so check the socket directly if [ -n "$session_name" ] && { [ -e "${XDG_RUNTIME_DIR}/kakoune/$session_name" ] || [ -e "${TMPDIR:-/tmp}/kakoune-$USER/$session_name" ] } ; then # Force-reload if we get a file argument (useful for .git/COMMIT_EDITMSG). if [ $# -gt 0 ] && ! printf %s\\n "$@" | grep -q ^-e; then set -- -e 'try edit!' "$@" fi exec kak -c $session_name "$@" else exec kak -s "$session_name" "$@" fi