summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xrc/commands/edit28
1 files changed, 28 insertions, 0 deletions
diff --git a/rc/commands/edit b/rc/commands/edit
index c0723f6..4a89653 100755
--- a/rc/commands/edit
+++ b/rc/commands/edit
@@ -1,5 +1,8 @@
#!/bin/sh
+TMP=$(mktemp -d)
+trap "rm -Rf $TMP" EXIT
+
# Simple and naive implementation of realpath for macOS
realpath() {
file=$1
@@ -13,6 +16,31 @@ realpath() {
esac
}
+# Handle disconnected sessions
+if test -n "$KAKOUNE_SESSION"; then
+ exist=false
+ valid=false
+ kak -l > $TMP/session-list
+ while read session; do
+ if test "$session" = "$KAKOUNE_SESSION"; then
+ exist=true
+ valid=true
+ break
+ fi
+ if test "$session" = "$KAKOUNE_SESSION (dead)"; then
+ exist=true
+ valid=false
+ break
+ fi
+ done < $TMP/session-list
+ if test "$exist" = true -a "$valid" = false; then
+ kak -clear
+ kak -d -s "$KAKOUNE_SESSION"
+ elif test "$exist" = false; then
+ kak -d -s "$KAKOUNE_SESSION"
+ fi
+fi
+
if test "$KAKOUNE_SESSION" -a "$KAKOUNE_CLIENT"; then
commands=
# Ignore options