neovim 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.gitmodules +1 -1
- data/.rspec +1 -0
- data/.travis.yml +1 -1
- data/CHANGELOG.md +8 -0
- data/README.md +5 -3
- data/Rakefile +14 -8
- data/lib/neovim/buffer.rb +86 -114
- data/lib/neovim/client.rb +105 -103
- data/lib/neovim/current.rb +8 -18
- data/lib/neovim/executable.rb +2 -2
- data/lib/neovim/line_range.rb +48 -59
- data/lib/neovim/plugin/dsl.rb +11 -3
- data/lib/neovim/remote_object.rb +3 -13
- data/lib/neovim/ruby_provider.rb +3 -3
- data/lib/neovim/ruby_provider/buffer_ext.rb +3 -3
- data/lib/neovim/ruby_provider/vim.rb +2 -2
- data/lib/neovim/ruby_provider/window_ext.rb +3 -3
- data/lib/neovim/session.rb +4 -4
- data/lib/neovim/session/api.rb +50 -22
- data/lib/neovim/tabpage.rb +29 -19
- data/lib/neovim/version.rb +1 -1
- data/lib/neovim/window.rb +60 -40
- data/script/dump_api +1 -1
- data/script/generate_docs +35 -22
- data/spec/helper.rb +3 -1
- data/spec/integration/rplugin_autocmd_spec.vim +18 -0
- data/spec/integration/rplugin_command_spec.vim +97 -0
- data/spec/integration/rplugin_function_spec.vim +26 -0
- data/spec/integration/ruby_buffer_spec.rb +151 -0
- data/spec/{acceptance → integration}/ruby_spec.vim +2 -22
- data/spec/integration/ruby_vim_spec.rb +27 -0
- data/spec/integration/ruby_window_spec.rb +56 -0
- data/spec/{acceptance → integration}/rubydo_spec.vim +27 -18
- data/spec/{acceptance → integration}/rubyfile/call_foo.rb +0 -0
- data/spec/{acceptance → integration}/rubyfile/curbuf_ivar_get.rb +0 -0
- data/spec/{acceptance → integration}/rubyfile/curbuf_ivar_set.rb +0 -0
- data/spec/{acceptance → integration}/rubyfile/define_foo.rb +0 -0
- data/spec/{acceptance → integration}/rubyfile/raise_standard_error.rb +0 -0
- data/spec/{acceptance → integration}/rubyfile/raise_syntax_error.rb +0 -0
- data/spec/{acceptance → integration}/rubyfile/set_pwd_after.rb +0 -0
- data/spec/{acceptance → integration}/rubyfile/set_pwd_before.rb +0 -0
- data/spec/{acceptance → integration}/rubyfile_spec.vim +12 -30
- data/spec/integration/runtime/init.vim +9 -0
- data/spec/integration/runtime/rplugin/ruby/autocmds.rb +9 -0
- data/spec/integration/runtime/rplugin/ruby/commands.rb +59 -0
- data/spec/integration/runtime/rplugin/ruby/functions.rb +17 -0
- data/spec/integration_spec.rb +119 -0
- data/spec/neovim/buffer_spec.rb +0 -167
- data/spec/neovim/client_spec.rb +1 -44
- data/spec/neovim/current_spec.rb +0 -8
- data/spec/neovim/line_range_spec.rb +92 -97
- data/spec/neovim/plugin_spec.rb +14 -2
- data/spec/neovim/remote_object_spec.rb +4 -4
- data/spec/neovim/ruby_provider/buffer_ext_spec.rb +3 -3
- data/spec/neovim/ruby_provider/window_ext_spec.rb +1 -1
- data/spec/neovim/session/api_spec.rb +40 -35
- data/spec/neovim/session/event_loop_spec.rb +1 -1
- data/spec/neovim/session_spec.rb +15 -15
- metadata +49 -41
- data/script/acceptance_tests +0 -46
- data/spec/acceptance/rplugin_spec.vim +0 -19
- data/spec/acceptance/rubyfile/curbuf.rb +0 -1
- data/spec/acceptance/rubyfile/curwin.rb +0 -1
- data/spec/acceptance/rubyfile/vim_constants.rb +0 -2
- data/spec/acceptance/runtime/init.vim +0 -1
- data/spec/acceptance/runtime/rplugin/ruby/plugin.rb +0 -13
- data/spec/documentation_spec.rb +0 -24
- data/spec/neovim/window_spec.rb +0 -91
@@ -0,0 +1,26 @@
|
|
1
|
+
Before (Generate rplugin manifest):
|
2
|
+
silent UpdateRemotePlugins
|
3
|
+
|
4
|
+
Execute (Call rplugin functions with arguments):
|
5
|
+
call RPluginFunctionArgs(1, 2)
|
6
|
+
sleep 50m
|
7
|
+
AssertEqual [1, 2], g:rplugin_function_args
|
8
|
+
|
9
|
+
Given:
|
10
|
+
one
|
11
|
+
two
|
12
|
+
three
|
13
|
+
|
14
|
+
Execute (Call rplugin functions with a range):
|
15
|
+
1,2call RPluginFunctionRange()
|
16
|
+
sleep 50m
|
17
|
+
AssertEqual [1, 2], g:rplugin_function_range
|
18
|
+
|
19
|
+
Execute (Call rplugin functions with eval):
|
20
|
+
let g:to_eval = {'n': 42}
|
21
|
+
call RPluginFunctionEval()
|
22
|
+
sleep 50m
|
23
|
+
AssertEqual {'n': 42}, g:rplugin_function_eval
|
24
|
+
|
25
|
+
Execute (Call synchronous rplugin functions):
|
26
|
+
AssertEqual v:true, RPluginFunctionSync()
|
@@ -0,0 +1,151 @@
|
|
1
|
+
begin
|
2
|
+
require "helper"
|
3
|
+
rescue LoadError
|
4
|
+
end
|
5
|
+
|
6
|
+
RSpec.describe "Vim::Buffer", :embedded do
|
7
|
+
before do
|
8
|
+
$curbuf.set_lines(0, -1, true, ["one", "two", "three"])
|
9
|
+
$curwin.set_cursor([1, 0])
|
10
|
+
end
|
11
|
+
|
12
|
+
specify "$curbuf" do
|
13
|
+
expect($curbuf).to be_a(Vim::Buffer)
|
14
|
+
end
|
15
|
+
|
16
|
+
specify ".current" do
|
17
|
+
expect(Vim::Buffer.current).to eq($curbuf)
|
18
|
+
end
|
19
|
+
|
20
|
+
specify ".[]" do
|
21
|
+
expect(Vim::Buffer[0]).to eq($curbuf)
|
22
|
+
end
|
23
|
+
|
24
|
+
specify ".count" do
|
25
|
+
expect(Vim::Buffer.count).to be > 0
|
26
|
+
end
|
27
|
+
|
28
|
+
specify "#name" do
|
29
|
+
$curbuf.set_name("test_buf")
|
30
|
+
expect($curbuf.name).to include("test_buf")
|
31
|
+
end
|
32
|
+
|
33
|
+
specify "#number" do
|
34
|
+
expect($curbuf.number).to eq(1)
|
35
|
+
end
|
36
|
+
|
37
|
+
specify "#count" do
|
38
|
+
expect($curbuf.count).to eq(3)
|
39
|
+
end
|
40
|
+
|
41
|
+
specify "#length" do
|
42
|
+
expect($curbuf.length).to eq(3)
|
43
|
+
end
|
44
|
+
|
45
|
+
specify "#[]" do
|
46
|
+
expect($curbuf[1]).to eq("one")
|
47
|
+
|
48
|
+
expect do
|
49
|
+
$curbuf[-1]
|
50
|
+
end.to raise_error(/out of bounds/)
|
51
|
+
|
52
|
+
expect do
|
53
|
+
$curbuf[4]
|
54
|
+
end.to raise_error(/out of bounds/)
|
55
|
+
end
|
56
|
+
|
57
|
+
specify "#[]=" do
|
58
|
+
expect($curbuf[1] = "first").to eq("first")
|
59
|
+
expect($curbuf[1]).to eq("first")
|
60
|
+
|
61
|
+
expect do
|
62
|
+
$curbuf[4] = "line"
|
63
|
+
end.to raise_error(/out of bounds/)
|
64
|
+
|
65
|
+
expect do
|
66
|
+
$curbuf[-1] = "line"
|
67
|
+
end.to raise_error(/out of bounds/)
|
68
|
+
end
|
69
|
+
|
70
|
+
specify "#delete" do
|
71
|
+
expect($curbuf.delete(3)).to eq(nil)
|
72
|
+
expect($curbuf.count).to eq(2)
|
73
|
+
|
74
|
+
expect do
|
75
|
+
$curbuf.delete(-1)
|
76
|
+
end.to raise_error(/out of bounds/)
|
77
|
+
|
78
|
+
expect do
|
79
|
+
$curbuf.delete(4)
|
80
|
+
end.to raise_error(/out of bounds/)
|
81
|
+
end
|
82
|
+
|
83
|
+
specify "#append" do
|
84
|
+
expect($curbuf.append(2, "last")).to eq("last")
|
85
|
+
expect($curbuf[3]).to eq("last")
|
86
|
+
|
87
|
+
$curbuf.set_lines(0, -1, true, [])
|
88
|
+
$curbuf.append(0, "one")
|
89
|
+
|
90
|
+
expect($curbuf.lines.to_a).to eq(["one", ""])
|
91
|
+
|
92
|
+
expect do
|
93
|
+
$curbuf.append(0, "two")
|
94
|
+
end.not_to change { $curwin.cursor }
|
95
|
+
|
96
|
+
expect do
|
97
|
+
$curbuf.append(-1, "line")
|
98
|
+
end.to raise_error(/out of bounds/)
|
99
|
+
|
100
|
+
expect do
|
101
|
+
$curbuf.append(4, "line")
|
102
|
+
end.to raise_error(/out of bounds/)
|
103
|
+
end
|
104
|
+
|
105
|
+
specify "#line_number" do
|
106
|
+
expect do
|
107
|
+
Vim.command("normal j")
|
108
|
+
end.to change { $curbuf.line_number }.from(1).to(2)
|
109
|
+
|
110
|
+
original = $curbuf
|
111
|
+
|
112
|
+
begin
|
113
|
+
Vim.command("new")
|
114
|
+
expect(original.line_number).to eq(nil)
|
115
|
+
ensure
|
116
|
+
Vim.set_current_buf(original)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
specify "#line" do
|
121
|
+
expect do
|
122
|
+
Vim.command("normal j")
|
123
|
+
end.to change { $curbuf.line }.from("one").to("two")
|
124
|
+
|
125
|
+
original = $curbuf
|
126
|
+
|
127
|
+
begin
|
128
|
+
Vim.command("new")
|
129
|
+
expect(original.line).to eq(nil)
|
130
|
+
ensure
|
131
|
+
Vim.set_current_buf(original)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
specify "#line=" do
|
136
|
+
$curbuf.line = "first"
|
137
|
+
expect($curbuf[1]).to eq("first")
|
138
|
+
|
139
|
+
original = $curbuf
|
140
|
+
|
141
|
+
begin
|
142
|
+
Vim.command("new")
|
143
|
+
|
144
|
+
expect do
|
145
|
+
original.line = "line"
|
146
|
+
end.not_to change { original.lines.to_a }
|
147
|
+
ensure
|
148
|
+
Vim.set_current_buf(original)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
@@ -9,28 +9,6 @@ Given:
|
|
9
9
|
one
|
10
10
|
two
|
11
11
|
|
12
|
-
Execute (Access `Vim` and `VIM` constants):
|
13
|
-
ruby Vim.command('1normal! Sfirst')
|
14
|
-
ruby VIM.command('2normal! Ssecond')
|
15
|
-
|
16
|
-
Expect:
|
17
|
-
first
|
18
|
-
second
|
19
|
-
|
20
|
-
Execute (Access `$curbuf` global variable):
|
21
|
-
ruby $curbuf[1] = "first"
|
22
|
-
|
23
|
-
Expect:
|
24
|
-
first
|
25
|
-
two
|
26
|
-
|
27
|
-
Execute (Access `$curwin` global variable):
|
28
|
-
ruby $curwin.buffer[1] = "first"
|
29
|
-
|
30
|
-
Expect:
|
31
|
-
first
|
32
|
-
two
|
33
|
-
|
34
12
|
Execute (Define a Ruby method):
|
35
13
|
ruby def foo; Vim.command("let g:called = 1"); end
|
36
14
|
|
@@ -72,6 +50,7 @@ Then:
|
|
72
50
|
Execute (Raise a Ruby standard error):
|
73
51
|
try
|
74
52
|
ruby raise "BOOM"
|
53
|
+
throw "Nothing raised"
|
75
54
|
catch /BOOM/
|
76
55
|
endtry
|
77
56
|
|
@@ -84,6 +63,7 @@ Expect:
|
|
84
63
|
Execute (Raise a Ruby syntax error):
|
85
64
|
try
|
86
65
|
ruby puts[
|
66
|
+
throw "Nothing raised"
|
87
67
|
catch /SyntaxError/
|
88
68
|
endtry
|
89
69
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
begin
|
2
|
+
require "helper"
|
3
|
+
rescue LoadError
|
4
|
+
end
|
5
|
+
|
6
|
+
RSpec.describe "Vim", :embedded do
|
7
|
+
before do
|
8
|
+
$curbuf.set_lines(0, -1, true, ["one", "two", "three"])
|
9
|
+
end
|
10
|
+
|
11
|
+
specify { expect(Vim).to be(VIM) }
|
12
|
+
|
13
|
+
specify "class methods" do
|
14
|
+
Vim.message(".")
|
15
|
+
|
16
|
+
expect {
|
17
|
+
Vim.set_option("makeprg", "rake")
|
18
|
+
}.to change { Vim.evaluate("&makeprg") }.to("rake")
|
19
|
+
|
20
|
+
expect {
|
21
|
+
Vim.set_option("timeoutlen=0")
|
22
|
+
}.to change { Vim.evaluate("&timeoutlen") }.to(0)
|
23
|
+
|
24
|
+
Vim.command("let g:foo = 'bar'")
|
25
|
+
expect(Vim.evaluate("g:foo")).to eq("bar")
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
begin
|
2
|
+
require "helper"
|
3
|
+
rescue LoadError
|
4
|
+
end
|
5
|
+
|
6
|
+
RSpec.describe "Vim::Window", :embedded do
|
7
|
+
before do
|
8
|
+
$curbuf.set_lines(0, -1, true, ["one", "two", "three"])
|
9
|
+
Vim.command("vsplit")
|
10
|
+
end
|
11
|
+
|
12
|
+
specify "$curwin" do
|
13
|
+
expect($curwin).to be_a(Vim::Window)
|
14
|
+
end
|
15
|
+
|
16
|
+
specify ".current" do
|
17
|
+
expect(Vim::Window.current).to eq($curwin)
|
18
|
+
end
|
19
|
+
|
20
|
+
specify ".[]" do
|
21
|
+
expect(Vim::Window[0]).to eq($curwin)
|
22
|
+
end
|
23
|
+
|
24
|
+
specify ".count" do
|
25
|
+
expect do
|
26
|
+
Vim.command("split")
|
27
|
+
end.to change { Vim::Window.count }.by(1)
|
28
|
+
|
29
|
+
expect do
|
30
|
+
Vim.command("tabnew")
|
31
|
+
end.to change { Vim::Window.count }.to(1)
|
32
|
+
.and change { Vim::Window[1] }.to(nil)
|
33
|
+
end
|
34
|
+
|
35
|
+
specify "#buffer" do
|
36
|
+
expect($curwin.buffer).to eq($curbuf)
|
37
|
+
end
|
38
|
+
|
39
|
+
specify "#height", "#height=" do
|
40
|
+
expect do
|
41
|
+
$curwin.height -= 1
|
42
|
+
end.to change { $curwin.height }.by(-1)
|
43
|
+
end
|
44
|
+
|
45
|
+
specify "#width", "#width=" do
|
46
|
+
expect do
|
47
|
+
$curwin.width -= 1
|
48
|
+
end.to change { $curwin.width }.by(-1)
|
49
|
+
end
|
50
|
+
|
51
|
+
specify "#cursor", "#cursor=" do
|
52
|
+
expect($curwin.cursor = [2, 0]).to eq([2, 0])
|
53
|
+
expect($curwin.cursor).to eq([2, 0])
|
54
|
+
expect($curwin.buffer.line).to eq("two")
|
55
|
+
end
|
56
|
+
end
|
@@ -1,33 +1,40 @@
|
|
1
1
|
Given:
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
one
|
3
|
+
two
|
4
|
+
three
|
5
|
+
four
|
6
6
|
|
7
7
|
Execute (Update one line using `$_`):
|
8
8
|
2rubydo $_.upcase!
|
9
9
|
|
10
10
|
Expect:
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
one
|
12
|
+
TWO
|
13
|
+
three
|
14
|
+
four
|
15
15
|
|
16
16
|
Execute (Update a range of lines using `$_`):
|
17
17
|
2,3rubydo $_.upcase!
|
18
18
|
|
19
19
|
Expect:
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
one
|
21
|
+
TWO
|
22
|
+
THREE
|
23
|
+
four
|
24
24
|
|
25
25
|
Execute (Update all lines using `$_`):
|
26
26
|
%rubydo $_.upcase!
|
27
27
|
|
28
|
+
Expect:
|
29
|
+
ONE
|
30
|
+
TWO
|
31
|
+
THREE
|
32
|
+
FOUR
|
33
|
+
|
28
34
|
Execute (Raise a Ruby standard error):
|
29
35
|
try
|
30
36
|
1rubydo raise "BOOM"
|
37
|
+
throw "Nothing raised"
|
31
38
|
catch /BOOM/
|
32
39
|
endtry
|
33
40
|
|
@@ -35,13 +42,14 @@ Execute (Raise a Ruby standard error):
|
|
35
42
|
|
36
43
|
Expect:
|
37
44
|
still works
|
38
|
-
|
39
|
-
|
40
|
-
|
45
|
+
two
|
46
|
+
three
|
47
|
+
four
|
41
48
|
|
42
49
|
Execute (Raise a Ruby syntax error):
|
43
50
|
try
|
44
51
|
1rubydo puts[
|
52
|
+
throw "Nothing raised"
|
45
53
|
catch /SyntaxError/
|
46
54
|
endtry
|
47
55
|
|
@@ -49,9 +57,9 @@ Execute (Raise a Ruby syntax error):
|
|
49
57
|
|
50
58
|
Expect:
|
51
59
|
still works
|
52
|
-
|
53
|
-
|
54
|
-
|
60
|
+
two
|
61
|
+
three
|
62
|
+
four
|
55
63
|
|
56
64
|
Given:
|
57
65
|
x
|
@@ -61,6 +69,7 @@ Execute (Add a large number of lines):
|
|
61
69
|
silent normal 6000p
|
62
70
|
%rubydo $_.succ!
|
63
71
|
|
72
|
+
Then:
|
64
73
|
AssertEqual "y", getline(1)
|
65
74
|
AssertEqual "y", getline(6001)
|
66
75
|
AssertEqual "", getline(6002)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -9,47 +9,26 @@ Given:
|
|
9
9
|
one
|
10
10
|
two
|
11
11
|
|
12
|
-
Execute (Access `Vim` and `VIM` constants):
|
13
|
-
rubyfile ./spec/acceptance/rubyfile/vim_constants.rb
|
14
|
-
|
15
|
-
Expect:
|
16
|
-
first
|
17
|
-
second
|
18
|
-
|
19
|
-
Execute (Access `$curbuf` global variable):
|
20
|
-
rubyfile ./spec/acceptance/rubyfile/curbuf.rb
|
21
|
-
|
22
|
-
Expect:
|
23
|
-
first
|
24
|
-
two
|
25
|
-
|
26
|
-
Execute (Access `$curwin` global variable):
|
27
|
-
rubyfile ./spec/acceptance/rubyfile/curwin.rb
|
28
|
-
|
29
|
-
Expect:
|
30
|
-
first
|
31
|
-
two
|
32
|
-
|
33
12
|
Execute (Define a Ruby method):
|
34
|
-
rubyfile ./
|
13
|
+
rubyfile ./rubyfile/define_foo.rb
|
35
14
|
|
36
15
|
Execute (Call a Ruby method):
|
37
|
-
rubyfile ./
|
16
|
+
rubyfile ./rubyfile/call_foo.rb
|
38
17
|
|
39
18
|
Then:
|
40
19
|
AssertEqual 1, g:called
|
41
20
|
|
42
21
|
Execute (Update instance state on $curbuf):
|
43
|
-
rubyfile ./
|
22
|
+
rubyfile ./rubyfile/curbuf_ivar_set.rb
|
44
23
|
|
45
24
|
Execute (Access instance state on $curbuf):
|
46
|
-
rubyfile ./
|
25
|
+
rubyfile ./rubyfile/curbuf_ivar_get.rb
|
47
26
|
|
48
27
|
Then:
|
49
28
|
AssertEqual 123, g:foo
|
50
29
|
|
51
30
|
Execute (Change the working directory explicitly):
|
52
|
-
let g:rubyfile = getcwd() . "/
|
31
|
+
let g:rubyfile = getcwd() . "/rubyfile/set_pwd_before.rb"
|
53
32
|
cd /
|
54
33
|
exec "rubyfile " . g:rubyfile
|
55
34
|
cd -
|
@@ -60,8 +39,8 @@ Then:
|
|
60
39
|
endif
|
61
40
|
|
62
41
|
Execute (Change the working directory implicitly):
|
63
|
-
let g:before_file = getcwd() . "/
|
64
|
-
let g:after_file = getcwd() . "/
|
42
|
+
let g:before_file = getcwd() . "/rubyfile/set_pwd_before.rb"
|
43
|
+
let g:after_file = getcwd() . "/rubyfile/set_pwd_after.rb"
|
65
44
|
|
66
45
|
split | lcd /
|
67
46
|
exec "rubyfile " . g:before_file
|
@@ -77,6 +56,7 @@ Then:
|
|
77
56
|
Execute (Raise a Ruby load error):
|
78
57
|
try
|
79
58
|
rubyfile /foo/bar/baz
|
59
|
+
throw "Nothing raised"
|
80
60
|
catch /LoadError/
|
81
61
|
endtry
|
82
62
|
|
@@ -88,7 +68,8 @@ Expect:
|
|
88
68
|
|
89
69
|
Execute (Raise a Ruby standard error):
|
90
70
|
try
|
91
|
-
rubyfile ./
|
71
|
+
rubyfile ./rubyfile/raise_standard_error.rb
|
72
|
+
throw "Nothing raised"
|
92
73
|
catch /BOOM/
|
93
74
|
endtry
|
94
75
|
|
@@ -100,7 +81,8 @@ Expect:
|
|
100
81
|
|
101
82
|
Execute (Raise a Ruby syntax error):
|
102
83
|
try
|
103
|
-
rubyfile ./
|
84
|
+
rubyfile ./rubyfile/raise_syntax_error.rb
|
85
|
+
throw "Nothing raised"
|
104
86
|
catch /SyntaxError/
|
105
87
|
endtry
|
106
88
|
|