summaryrefslogtreecommitdiff
path: root/autoload/windowing/repl/x11.kak
diff options
context:
space:
mode:
authorthing1 <thing1@seacrossedlovers.xyz>2025-01-28 09:14:32 +0000
committerthing1 <thing1@seacrossedlovers.xyz>2025-01-28 09:14:32 +0000
commit904cec3c4a329cf89fc3219d359239910d61f3f6 (patch)
tree8d113899921dfbaca0e77c49ab5fc827362d1091 /autoload/windowing/repl/x11.kak
init commitHEADmaster
Diffstat (limited to 'autoload/windowing/repl/x11.kak')
-rw-r--r--autoload/windowing/repl/x11.kak41
1 files changed, 41 insertions, 0 deletions
diff --git a/autoload/windowing/repl/x11.kak b/autoload/windowing/repl/x11.kak
new file mode 100644
index 0000000..8f048a7
--- /dev/null
+++ b/autoload/windowing/repl/x11.kak
@@ -0,0 +1,41 @@
+hook global ModuleLoaded x11 %{
+ require-module x11-repl
+}
+
+provide-module x11-repl %{
+
+declare-option -docstring "window id of the REPL window" str x11_repl_id
+
+define-command -docstring %{
+ x11-repl [<arguments>]: create a new window for repl interaction
+ All optional parameters are forwarded to the new window
+} \
+ -params .. \
+ x11-repl %{ x11-terminal-window sh -c %{
+ winid="${WINDOWID:-$(xdotool search --pid ${PPID} | tail -1)}"
+ printf "evaluate-commands -try-client $1 \
+ 'set-option current x11_repl_id ${winid}'" | kak -p "$2"
+ shift 2;
+ [ "$1" ] && "$@" || "$SHELL"
+ } -- %val{client} %val{session} %arg{@}
+}
+complete-command x11-repl shell
+
+define-command x11-send-text -params 0..1 -docstring %{
+ x11-send-text [text]: Send text to the REPL window.
+ If no text is passed, then the selection is used
+ } %{
+ evaluate-commands %sh{
+ ([ "$#" -gt 0 ] && printf "%s" "$1" || printf "%s" "${kak_selection}" ) | xsel -i ||
+ echo 'fail x11-send-text: failed to run xsel, see *debug* buffer for details' &&
+ kak_winid=$(xdotool getactivewindow) &&
+ xdotool windowactivate "${kak_opt_x11_repl_id}" key --clearmodifiers Shift+Insert &&
+ xdotool windowactivate "${kak_winid}" ||
+ echo 'fail x11-send-text: failed to run xdotool, see *debug* buffer for details'
+ }
+}
+
+alias global repl-new x11-repl
+alias global repl-send-text x11-send-text
+
+}