-
Notifications
You must be signed in to change notification settings - Fork 0
/
shalkboard_clipboard.sh
37 lines (29 loc) · 1.04 KB
/
shalkboard_clipboard.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env bash
source lib/terminal.sh
source lib/stack.sh
source lib/buffer.sh
shalkboard_clipboard_copy_start() {
shalkboard_clipboard_selection_x="$1";
shalkboard_clipboard_selection_y="$2";
terminal write "$1" "$2" "◿"
}
shalkboard_clipboard_copy_end() {
if [ "${shalkboard_clipboard_selection_x-}x" != "x" ]; then
terminal write "$1" "$2" "◸"
on_terminal_write() { buffer write "$@"; }
on_terminal_clear() { buffer clear; }
buffer clear
stack replay
IFS=$'\r\n' GLOBIGNORE='*' command eval 'shalkboard_clipboard=($(buffer copy "$shalkboard_clipboard_selection_x" "$shalkboard_clipboard_selection_y" "$1" "$2"))'
on_terminal_write() { :; }
on_terminal_clear() { :; }
terminal write "$shalkboard_clipboard_selection_x" "$shalkboard_clipboard_selection_y" "◿"
terminal write "$1" "$2" "◸"
unset shalkboard_clipboard_selection_x
unset shalkboard_clipboard_selection_y
fi
}
shalkboard_clipboard_paste() {
stack push terminal sprite "$@" "${shalkboard_clipboard[@]}"
stack commit
}