summaryrefslogtreecommitdiff
path: root/rc
diff options
context:
space:
mode:
authorAlex Leferry 2 <alexherbo2@gmail.com>2020-08-17 04:57:14 +0200
committerAlex Leferry 2 <alexherbo2@gmail.com>2020-08-17 05:02:55 +0200
commit6e7d0341de360a0ffa889c9f00c27ff301a60944 (patch)
tree858dc9b635c1856664420eee1d7b43e8ad0cc46d /rc
parentad7d2636d4aa253370848a5d641fa1664179d240 (diff)
Add an :edit-wait command
Diffstat (limited to 'rc')
-rw-r--r--rc/env/git.env2
-rwxr-xr-xrc/paths/commands/:edit-wait27
2 files changed, 28 insertions, 1 deletions
diff --git a/rc/env/git.env b/rc/env/git.env
index d90e610..c7e5fd1 100644
--- a/rc/env/git.env
+++ b/rc/env/git.env
@@ -1 +1 @@
-export GIT_EDITOR=kak
+export GIT_EDITOR=:edit-wait
diff --git a/rc/paths/commands/:edit-wait b/rc/paths/commands/:edit-wait
new file mode 100755
index 0000000..7da1c3d
--- /dev/null
+++ b/rc/paths/commands/:edit-wait
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Open files
+:edit "$@"
+
+# Prompt and wait
+printf '[e]dit, [c]ontinue or [a]bort'
+read -n 1 key
+
+# Attach the session
+[ "$key" = 'e' ] && :attach; edit_exit_code=$?
+
+# Close buffers
+for file do
+ :send delete-buffer "$file"
+done
+
+# Set exit code
+case "$key" in
+ e) exit_code=$edit_exit_code ;;
+ c) exit_code=0 ;;
+ a) exit_code=1 ;;
+ *) exit_code=0 ;;
+esac
+
+# Exit code
+exit "$exit_code"