From 208b91627dfbb71631ba9c51bc52a4e5af563738 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Tue, 17 Nov 2015 22:25:33 +0000 Subject: [PATCH] Move client.kak as x11.kak and change tmux.kak to be its peer --- rc/tmux.kak | 51 +++++++++++--------------------------- rc/{client.kak => x11.kak} | 25 ++++++++++--------- 2 files changed, 28 insertions(+), 48 deletions(-) rename rc/{client.kak => x11.kak} (71%) diff --git a/rc/tmux.kak b/rc/tmux.kak index 9de65754..b153ba15 100644 --- a/rc/tmux.kak +++ b/rc/tmux.kak @@ -1,66 +1,45 @@ # http://tmux.github.io/ # ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -## Can be one of "horizontal", "vertical" or "window" -## When a new client is created, an horizontal pane, a vertical pane or a window will respectively be made -decl str tmux_default_direction "horizontal" - ## The default behaviour for the `new` command is to open an horizontal pane in a tmux session hook global KakBegin .* %{ %sh{ if [ -n "$TMUX" ]; then - tmuxcmd="" - - case "${kak_opt_tmux_default_direction}" in - vertical) tmuxcmd="tmux split-window -v";; - window) tmuxcmd="tmux new-window";; - horizontal) tmuxcmd="tmux split-window -h";; - *) echo "invalid value: ${kak_opt_tmux_default_direction}" >&2;; - esac - - if [ -n "${tmuxcmd}" ]; then - echo "set global termcmd '${tmuxcmd}'" - fi - - echo "alias global focus focus-tmux" + echo "alias global focus tmux-focus" + echo "alias global new tmux-new-horizontal" fi } } ## Temporarily override the default client creation command -def -hidden -shell-params tmux_override_termcmd %{ +def -hidden -shell-params tmux-new-impl %{ %sh{ if [ -z "$TMUX" ]; then echo "echo -color Error This command is only available in a tmux session" - else - readonly cmd_override="$1" - readonly termcmd="${kak_opt_termcmd}" - - shift - echo " - set current termcmd '${cmd_override}' - eval new $@ - set current termcmd '${termcmd//'/\\'}' - " + exit fi + tmux_args="$1" + shift + if [ $# -ne 0 ]; then kakoune_params="-e '$@'"; fi + tmux $tmux_args "kak -c ${kak_session} ${kakoune_params}" < /dev/null > /dev/null 2>&1 & } } def tmux-new-vertical -shell-params -command-completion -docstring "Create a new vertical pane in tmux" %{ - %sh{ - echo "eval %{tmux_override_termcmd 'tmux split-window -v' $@}" - } + %sh{ echo "tmux-new-impl 'split-window -v' $@" } } def tmux-new-horizontal -shell-params -command-completion -docstring "Create a new horizontal pane in tmux" %{ - %sh{ - echo "eval %{tmux_override_termcmd 'tmux split-window -h' $@}" - } + %sh{ echo "tmux-new-impl 'split-window -h' $@" } +} + +def tmux-new-window -shell-params -command-completion -docstring "Create a new horizontal pane in tmux" %{ + %sh{ echo "tmux-new-impl 'new-window' $@" } } def -docstring "focus given client" \ -shell-params -client-completion \ - focus-tmux %{ %sh{ + tmux-focus %{ %sh{ if [ $# -gt 1 ]; then echo "echo -color Error 'too many arguments, use focus [client]'" elif [ $# -eq 1 ]; then diff --git a/rc/client.kak b/rc/x11.kak similarity index 71% rename from rc/client.kak rename to rc/x11.kak index d3b38102..cd4d4465 100644 --- a/rc/client.kak +++ b/rc/x11.kak @@ -21,7 +21,7 @@ decl str termcmd %sh{ def -docstring 'create a new kak client for current session' \ -shell-params \ -command-completion \ - new %{ %sh{ + x11-new %{ %sh{ if [ -z "${kak_opt_termcmd}" ]; then echo "echo -color Error 'termcmd option is not set'" exit @@ -30,16 +30,17 @@ def -docstring 'create a new kak client for current session' \ setsid ${kak_opt_termcmd} "kak -c ${kak_session} ${kakoune_params}" < /dev/null > /dev/null 2>&1 & }} -def -docstring 'focus given client' \ +def -docstring 'focus given client\'s window' \ -shell-params -client-completion \ - focus-default %{ %sh{ - if [ $# -gt 1 ]; then - echo "echo -color Error 'too many arguments, use focus [client]'" - elif [ $# -eq 1 ]; then - echo "eval -client '$1' focus" - else - xdotool windowactivate $kak_client_env_WINDOWID > /dev/null - fi + x11-focus %{ %sh{ + if [ $# -gt 1 ]; then + echo "echo -color Error 'too many arguments, use focus [client]'" + elif [ $# -eq 1 ]; then + echo "eval -client '$1' focus" + else + xdotool windowactivate $kak_client_env_WINDOWID > /dev/null + fi } } -## Create an alias to the default focus callback to allow overriding from custom scripts (i.e. tmux) -alias global focus focus-default + +alias global focus x11-focus +alias global new x11-new