summaryrefslogtreecommitdiff
path: root/autoload/windowing/repl/kitty.kak
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/windowing/repl/kitty.kak')
-rw-r--r--autoload/windowing/repl/kitty.kak56
1 files changed, 56 insertions, 0 deletions
diff --git a/autoload/windowing/repl/kitty.kak b/autoload/windowing/repl/kitty.kak
new file mode 100644
index 0000000..1f60366
--- /dev/null
+++ b/autoload/windowing/repl/kitty.kak
@@ -0,0 +1,56 @@
+hook global ModuleLoaded kitty %{
+ require-module kitty-repl
+}
+
+provide-module kitty-repl %{
+
+define-command -params .. \
+ -docstring %{
+ kitty-repl [<arguments>]: Create a new window for repl interaction.
+
+ All optional parameters are forwarded to the new window.
+ } \
+ kitty-repl %{
+ nop %sh{
+ if [ $# -eq 0 ]; then
+ cmd="${SHELL:-/bin/sh}"
+ else
+ cmd="$*"
+ fi
+
+ match=""
+ if [ -n "$kak_client_env_KITTY_WINDOW_ID" ]; then
+ match="--match=window_id:$kak_client_env_KITTY_WINDOW_ID"
+ fi
+
+ listen=""
+ if [ -n "$kak_client_env_KITTY_LISTEN_ON" ]; then
+ listen="--to=$kak_client_env_KITTY_LISTEN_ON"
+ fi
+
+ kitty @ $listen launch --no-response --keep-focus --type="$kak_opt_kitty_window_type" --title=kak_repl_window --cwd="$PWD" $match $cmd
+ }
+}
+complete-command kitty-repl shell
+
+define-command -hidden -params 0..1 \
+ -docstring %{
+ kitty-send-text [text]: Send text to the REPL window.
+
+ If no text is passed, the selection is used.
+ } \
+ kitty-send-text %{
+ nop %sh{
+ if [ $# -eq 0 ]; then
+ text="$kak_selection"
+ else
+ text="$1"
+ fi
+ kitty @ send-text --match=title:kak_repl_window "$text"
+ }
+}
+
+alias global repl-new kitty-repl
+alias global repl-send-text kitty-send-text
+
+}