aboutsummaryrefslogtreecommitdiff
path: root/autoload/window.kak
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--autoload/window.kak18
1 files changed, 18 insertions, 0 deletions
diff --git a/autoload/window.kak b/autoload/window.kak
index 8986914..ba1fab7 100644
--- a/autoload/window.kak
+++ b/autoload/window.kak
@@ -10,3 +10,21 @@ map global win j ': nop %sh{tmux select-pane -D}<ret>' -docstring 'Jump down'
map global win k ': nop %sh{tmux select-pane -U}<ret>' -docstring 'Jump up'
map global win l ': nop %sh{tmux select-pane -R}<ret>' -docstring 'Jump right'
map global win z ': wq<ret>'
+
+define-command terminal-singleton -params 2.. -docstring 'terminal-singleton <name> <command> [args...]' %{
+ eval %sh{
+ name="$1"; shift;
+ open-term-win() {
+ printf "terminal -n '$name' env"
+ printf " 'KAKOUNE_SESSION=$kak_session' 'KAKOUNE_CLIENT=$kak_client'"
+ printf " 'GIT_EDITOR=kak -c \"$kak_session\"' 'EDITOR=kcr edit' 'VISUAL=kcr edit'"
+ printf " %q" "$@"
+ echo ""
+ }
+ focus-term-win() {
+ tmux select-window -t "$name" >/dev/null 2>&1
+ }
+
+ focus-term-win || open-term-win "$@";
+ }
+}