31 lines
797 B
Bash
Executable file
31 lines
797 B
Bash
Executable file
#!/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
|