# Requires kakpipe and unbuffer declare-option -docstring "The last command ran in compilation-mode "\ str compile_last_command "" declare-option -docstring "How the compile buffer should be displayed Options: 'default': Create a new buffer in the current kakoune window 'new': Create a new window via ':terminal' 'tmux_vertical': Create a tmux vertical split 'tmux_horizontal': Create a tmux horizontal split 'tmux_popup': Create a tmux popup window "\ str compile_run_mode "default" define-command -hidden -params 1.. compile-exec %{ evaluate-commands %sh{ case "$kak_opt_compile_run_mode" in default) exec kakpipe fifo -s "$kak_session" -- unbuffer "$@" ;; new) printf 'terminal kak -e "set-option global compile_run_mode default; compile %s"\n' "$*" ;; tmux_vertical|tmux_horizontal|tmux_popup) if [ -z "$kak_client_env_TMUX" ]; then echo 'fail "tmux is not running"' exit fi case "$kak_opt_compile_run_mode" in tmux_vertical) tmux_args="split-window -t '${kak_client_env_TMUX_PANE}' -v" ;; tmux_horizontal) tmux_args="split-window -t '${kak_client_env_TMUX_PANE}' -h" ;; tmux_popup) tmux_args="popup -E -t '${kak_client_env_TMUX_PANE}'" ;; esac printf "nop %%sh{ tmux %s kak -e 'set-option global compile_run_mode default; compile %s' }\n" "$tmux_args" "$*" ;; esac } } define-command -docstring "Compile: run a command in a fifo buffer" compile -params 1.. %{ set-option global compile_last_command "%arg{@}" compile-exec %arg{@} } define-command -docstring "Recompile: re-run the last compile command" recompile %{ evaluate-commands %sh{ if [ -z "$kak_opt_compile_last_command" ]; then echo 'fail "No previous compile command"' else echo "compile-exec $kak_opt_compile_last_command" fi } }