-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvim-tests.bash
More file actions
72 lines (54 loc) · 1.43 KB
/
vim-tests.bash
File metadata and controls
72 lines (54 loc) · 1.43 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
if ! declare -f import:use &>/dev/null; then
_base_dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
source $_base_dir/vendor/github.com/reconquest/import.bash/import.bash
fi
import:use github.com/reconquest/tmux.bash
vim-tests:start() {
local session=$1
{
echo "set nocompatible"
echo "au VimEnter * silent !touch .$session-ready"
echo
cat
echo "set nomore"
} > .vimrc
tests:debug "vimrc"
_tests_indent "vimrc" "<empty>" < .vimrc
tmux:new-session "$session" "vim" -u .vimrc -U NONE
while [ ! -e .$session-ready ]; do
:
done
}
vim-tests:end-silent() {
vim-tests:end "${@}" 2>/dev/null || true
}
vim-tests:end() {
local session=$1
vim-tests:type "$session" "escape" "escape" ":qa!"
tmux:kill-session "$1"
}
vim-tests:get-rtp() {
find "$1" -mindepth 1 -maxdepth 1 -type d | paste -sd,
}
vim-tests:type() {
local session=$1
shift
tmux:send "$session" "${@}"
}
vim-tests:write-file() {
local session=$1
local filename=$2
vim-tests:type "$session" "escape" "escape" ":w $filename" "enter"
while [ ! -e $filename ]; do
:
done
}
vim-tests:get-messages() {
local session=$1
vim-tests:type "$session" "escape" "escape" \
":let @q=execute('messages')" \
"enter" \
":call writefile(getreg('q', 1, 1), '.$session-messages')" \
"enter"
cat .$session-messages
}