home/rc/extra/tmux-repl.kak
Frank LENORMAND f6a2925950 Fix, complete and add docstring documentation to builtin commands
Level out the builtin commands loaded at startup in terms of format and
expressiveness. The following convention was followed:
* commands that take more than one argument have to be described along
  with their parameters prior to the actual documentation, otherwise the
  docstring consists in a capitalized sentence
  e.g. `command <arg1>: do something`
* optional arguments are enclosed in square brackets, to comply with the
  format used for hardcoded commands
  e.g. `cd [<directory>]`
* describe the effects of the command in the documentation string and
  omit implementation details unless they are relevant. Usually command
  names include the name of the tool they use, so they don't need to be
  redundantly mentioned
  e.g. `tmux-new-pane <arguments>: open a new pane`
* document the format the parameters to the commands, or list them if
  they are to be chosen among a list of static values (c.f. `spell.kak`)
2016-10-11 10:26:17 +03:00

69 lines
2.3 KiB
Plaintext

# http://tmux.github.io/
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
hook global KakBegin .* %{
%sh{
if [ -n "$TMUX" ]; then
VERSION_TMUX=$(tmux -V)
VERSION_TMUX=$(expr "${VERSION_TMUX}" : 'tmux \([0-9]*\).*')
if [ "${VERSION_TMUX}" -gt 1 ]; then
echo "
alias global repl tmux-repl-horizontal
alias global send-text _tmux-send-text
"
else
echo "
alias global repl _tmux-repl-disabled
alias global send-text _tmux-repl-disabled
"
fi
fi
}
}
def -hidden -params 1..2 tmux-repl-impl %{
%sh{
if [ -z "$TMUX" ]; then
echo "echo -color Error This command is only available in a tmux session"
exit
fi
tmux_args="$1"
shift
tmux_cmd="$@"
tmux $tmux_args $tmux_cmd
tmux set-buffer -b kak_repl_window $(tmux display-message -p '#I')
tmux set-buffer -b kak_repl_pane $(tmux display-message -p '#P')
}
}
def tmux-repl-vertical -params 0..1 -command-completion -docstring "Create a new vertical pane for repl interaction" %{
tmux-repl-impl 'split-window -v' %arg{@}
}
def tmux-repl-horizontal -params 0..1 -command-completion -docstring "Create a new horizontal pane for repl interaction" %{
tmux-repl-impl 'split-window -h' %arg{@}
}
def tmux-repl-window -params 0..1 -command-completion -docstring "Create a new window for repl interaction" %{
tmux-repl-impl 'new-window' %arg{@}
}
def -hidden _tmux-send-text -docstring "Send the selected text to the repl pane" %{
nop %sh{
tmux set-buffer -b kak_selection "${kak_selection}"
kak_orig_window=$(tmux display-message -p '#I')
kak_orig_pane=$(tmux display-message -p '#P')
tmux select-window -t:$(tmux show-buffer -b kak_repl_window)
tmux select-pane -t:.$(tmux show-buffer -b kak_repl_pane)
tmux paste-buffer -b kak_selection
tmux select-window -t:${kak_orig_window}
tmux select-pane -t:.${kak_orig_pane}
}
}
def -hidden _tmux-repl-disabled %{ %sh{
VERSION_TMUX=$(tmux -V)
printf %s "echo -color Error %{The version of tmux is too old: got ${VERSION_TMUX}, expected >= 2.x}"
} }