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