From 25ffbacb70f214a4cd01196d7c2c963e94203f47 Mon Sep 17 00:00:00 2001 From: Subrata Date: Sun, 22 Aug 2021 09:57:09 -0500 Subject: [PATCH] In the tmux-repl, it tackles the situations where there is already some other tmux pane open and we want to send text (or do other works) in that specific pane. --- rc/windowing/repl/tmux.kak | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/rc/windowing/repl/tmux.kak b/rc/windowing/repl/tmux.kak index f0edb8f5..beee3e57 100644 --- a/rc/windowing/repl/tmux.kak +++ b/rc/windowing/repl/tmux.kak @@ -35,6 +35,35 @@ define-command tmux-repl-window -params 0.. -command-completion -docstring "Crea tmux-repl-impl 'new-window' %arg{@} } +define-command -params 0..1 tmux-repl-set-pane -docstring %{ + tmux-repl-set-pane [pane number]: Set an existing tmux pane for repl interaction + If the address of new pane is not given, next pane is used + (To get the pane number in tmux, + use 'tmux display-message -p '#{pane_id}'" in that pane) + } %{ + evaluate-commands %sh{ + if [ -z "$TMUX" ]; then + echo 'fail This command is only available in a tmux session' + exit + fi + if [ $# -eq 0 ]; then + curr_pane="$(tmux display-message -p '#{pane_id}')" + curr_pane_no="${curr_pane:1}" + tgt_pane=$((curr_pane_no+1)) + else + tgt_pane="$1" + fi + curr_win="$(tmux display-message -p '#{window_id}')" + curr_win_no="${curr_win:1}" + current=$(tmux list-panes -t $curr_win_no -F \#D) + if [[ "$current" =~ "%"$tgt_pane ]]; then + printf "set-option current tmux_repl_id '%s'" $(tmux display-message -p '#{session_id}:#{window_id}.')%$tgt_pane + else + echo 'fail The correct pane is not there. Activate using tmux-terminal-* or some other way' + fi + } +} + define-command -hidden tmux-send-text -params 0..1 -docstring %{ tmux-send-text [text]: Send text to the REPL pane. If no text is passed, then the selection is used