neovim 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.rubocop.yml +8 -0
- data/.travis.yml +4 -3
- data/CHANGELOG.md +11 -0
- data/README.md +10 -13
- data/Rakefile +18 -3
- data/appveyor.yml +4 -1
- data/{bin → exe}/neovim-ruby-host +0 -0
- data/lib/neovim/buffer.rb +34 -36
- data/lib/neovim/client.rb +121 -36
- data/lib/neovim/connection.rb +7 -1
- data/lib/neovim/event_loop.rb +3 -2
- data/lib/neovim/message.rb +1 -1
- data/lib/neovim/remote_object.rb +5 -2
- data/lib/neovim/ruby_provider.rb +2 -2
- data/lib/neovim/ruby_provider/vim.rb +6 -5
- data/lib/neovim/session.rb +11 -1
- data/lib/neovim/tabpage.rb +8 -15
- data/lib/neovim/version.rb +1 -1
- data/lib/neovim/window.rb +17 -33
- data/neovim.gemspec +4 -4
- data/script/dump_api.rb +1 -1
- data/script/generate_docs.rb +6 -7
- data/script/run_acceptance.rb +1 -1
- data/script/validate_docs.rb +1 -1
- data/spec/acceptance/ruby_spec.vim +13 -11
- data/spec/acceptance/rubydo_spec.vim +9 -0
- data/spec/acceptance/rubyfile/curbuf_ivar_get.rb +1 -1
- data/spec/acceptance/rubyfile/curbuf_ivar_set.rb +1 -1
- data/spec/acceptance/rubyfile/define_foo.rb +1 -1
- data/spec/acceptance/rubyfile/nested_inner.rb +1 -1
- data/spec/acceptance/rubyfile/set_pwd_after.rb +1 -1
- data/spec/acceptance/rubyfile/set_pwd_before.rb +1 -1
- data/spec/acceptance/rubyfile_spec.vim +15 -13
- data/spec/acceptance/runtime/init.vim +2 -2
- data/spec/helper.rb +1 -6
- data/spec/neovim/buffer_spec.rb +6 -0
- data/spec/neovim/client_spec.rb +7 -0
- data/spec/neovim/connection_spec.rb +30 -4
- data/spec/neovim/event_loop_spec.rb +6 -0
- data/spec/neovim/session_spec.rb +6 -0
- data/spec/support.rb +1 -1
- metadata +8 -23
- data/.coveralls.yml +0 -1
@@ -42,6 +42,15 @@ function! s:suite.updates_all_lines() abort
|
|
42
42
|
call s:expect(getline(1, 4)).to_equal(["ONE", "TWO", "THREE", "FOUR"])
|
43
43
|
endfunction
|
44
44
|
|
45
|
+
function! s:suite.ignores_line_deletion() abort
|
46
|
+
" Just ensure `Index out of bounds` exception isn't raised.
|
47
|
+
"
|
48
|
+
" Deleting or adding lines inside `:rubydo` is documented as not supported.
|
49
|
+
" Therefore this will remain inconsistent with Vim, which deletes all but
|
50
|
+
" the first line (?)
|
51
|
+
%rubydo Vim.command("%d")
|
52
|
+
endfunction
|
53
|
+
|
45
54
|
function! s:suite.handles_standard_error() abort
|
46
55
|
try
|
47
56
|
1rubydo raise "BOOM"
|
@@ -1 +1 @@
|
|
1
|
-
Vim.command("let
|
1
|
+
Vim.command("let s:var = #{$curbuf.instance_variable_get(:@var)}")
|
@@ -1 +1 @@
|
|
1
|
-
$curbuf.instance_variable_set(:@
|
1
|
+
$curbuf.instance_variable_set(:@var, 123)
|
@@ -1 +1 @@
|
|
1
|
-
Vim.command("let
|
1
|
+
Vim.command("let s:var = 123")
|
@@ -1 +1 @@
|
|
1
|
-
Vim.command("
|
1
|
+
Vim.command("call add(s:var, '#{Dir.pwd}')")
|
@@ -1 +1 @@
|
|
1
|
-
Vim.command("let
|
1
|
+
Vim.command("let s:var = ['#{Dir.pwd.sub(/^C:/, '')}']")
|
@@ -2,12 +2,13 @@ let s:suite = themis#suite(":rubyfile")
|
|
2
2
|
let s:expect = themis#helper("expect")
|
3
3
|
|
4
4
|
function! s:suite.before() abort
|
5
|
-
let
|
5
|
+
let s:pwd = getcwd()
|
6
6
|
cd spec/acceptance/rubyfile
|
7
|
+
unlet! s:var
|
7
8
|
endfunction
|
8
9
|
|
9
10
|
function! s:suite.after() abort
|
10
|
-
execute("cd " .
|
11
|
+
execute("cd " . s:pwd)
|
11
12
|
endfunction
|
12
13
|
|
13
14
|
function! s:suite.before_each() abort
|
@@ -23,42 +24,43 @@ function! s:suite.defines_a_ruby_method() abort
|
|
23
24
|
rubyfile ./define_foo.rb
|
24
25
|
rubyfile ./call_foo.rb
|
25
26
|
|
26
|
-
call s:expect(
|
27
|
+
call s:expect(s:var).to_equal(1)
|
27
28
|
endfunction
|
28
29
|
|
29
30
|
function! s:suite.persists_curbuf_state() abort
|
30
31
|
rubyfile ./curbuf_ivar_set.rb
|
31
32
|
rubyfile ./curbuf_ivar_get.rb
|
32
33
|
|
33
|
-
call s:expect(
|
34
|
+
call s:expect(s:var).to_equal(123)
|
34
35
|
endfunction
|
35
36
|
|
36
37
|
function! s:suite.updates_working_directory() abort
|
37
|
-
let
|
38
|
+
let s:rubyfile = getcwd() . "/set_pwd_before.rb"
|
38
39
|
cd /
|
39
|
-
exec "rubyfile " .
|
40
|
+
exec "rubyfile " . s:rubyfile
|
40
41
|
cd -
|
41
42
|
|
42
|
-
call s:expect(
|
43
|
+
call s:expect(s:var).to_equal(["/"])
|
43
44
|
endfunction
|
44
45
|
|
45
46
|
function! s:suite.updates_working_directory_implicitly() abort
|
46
|
-
let
|
47
|
-
let
|
47
|
+
let s:before_file = getcwd() . "/set_pwd_before.rb"
|
48
|
+
let s:after_file = getcwd() . "/set_pwd_after.rb"
|
48
49
|
|
49
50
|
split | lcd /
|
50
|
-
exec "rubyfile " .
|
51
|
+
exec "rubyfile " . s:before_file
|
51
52
|
wincmd p
|
52
|
-
exec "rubyfile " .
|
53
|
+
exec "rubyfile " . s:after_file
|
53
54
|
wincmd p | lcd -
|
54
55
|
|
55
|
-
call s:expect(
|
56
|
+
call s:expect(len(s:var)).to_equal(2)
|
57
|
+
call s:expect(s:var[0]).not.to_equal(s:var[1])
|
56
58
|
endfunction
|
57
59
|
|
58
60
|
function! s:suite.supports_nesting() abort
|
59
61
|
rubyfile ./nested.rb
|
60
62
|
|
61
|
-
call s:expect(
|
63
|
+
call s:expect(s:var).to_equal(123)
|
62
64
|
endfunction
|
63
65
|
|
64
66
|
function! s:suite.handles_standard_error() abort
|
@@ -1,7 +1,7 @@
|
|
1
1
|
let s:lib_path = getcwd() . "/lib"
|
2
|
-
let s:
|
2
|
+
let s:exe_path = getcwd() . "/exe/neovim-ruby-host"
|
3
3
|
let g:acceptance_rtp = getcwd() . "/spec/acceptance/runtime"
|
4
|
-
let g:ruby_host_prog = printf("ruby -I %s %s", s:lib_path, s:
|
4
|
+
let g:ruby_host_prog = printf("ruby -I %s %s", s:lib_path, s:exe_path)
|
5
5
|
|
6
6
|
ruby require "rspec/expectations"
|
7
7
|
ruby include ::RSpec::Matchers.dup
|
data/spec/helper.rb
CHANGED
@@ -1,10 +1,5 @@
|
|
1
1
|
require "bundler/setup"
|
2
2
|
|
3
|
-
if ENV["REPORT_COVERAGE"]
|
4
|
-
require "coveralls"
|
5
|
-
Coveralls.wear!
|
6
|
-
end
|
7
|
-
|
8
3
|
require "fileutils"
|
9
4
|
require "msgpack"
|
10
5
|
require "neovim"
|
@@ -14,7 +9,7 @@ require "securerandom"
|
|
14
9
|
require "stringio"
|
15
10
|
require "timeout"
|
16
11
|
|
17
|
-
require File.expand_path("
|
12
|
+
require File.expand_path("support.rb", __dir__)
|
18
13
|
|
19
14
|
RSpec.configure do |config|
|
20
15
|
config.expect_with :rspec do |exp|
|
data/spec/neovim/buffer_spec.rb
CHANGED
@@ -124,6 +124,12 @@ module Neovim
|
|
124
124
|
end.to change { buffer.lines.to_a }.to(["first", "one", "two"])
|
125
125
|
end
|
126
126
|
|
127
|
+
it "allows newlines" do
|
128
|
+
expect do
|
129
|
+
buffer.append(0, "first\nsecond")
|
130
|
+
end.to change { buffer.lines.to_a }.to(["first", "second", "one", "two"])
|
131
|
+
end
|
132
|
+
|
127
133
|
it "doesn't move the cursor" do
|
128
134
|
expect do
|
129
135
|
buffer.append(0, "first")
|
data/spec/neovim/client_spec.rb
CHANGED
@@ -25,6 +25,13 @@ module Neovim
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
describe "#shutdown" do
|
29
|
+
it "causes nvim to exit" do
|
30
|
+
client.shutdown
|
31
|
+
expect { client.strwidth("hi") }.to raise_error(Neovim::Session::Exited)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
28
35
|
describe "#respond_to?" do
|
29
36
|
it "returns true for vim functions" do
|
30
37
|
expect(client).to respond_to(:strwidth)
|
@@ -7,11 +7,29 @@ module Neovim
|
|
7
7
|
describe "#write" do
|
8
8
|
it "writes msgpack to the underlying file descriptor" do
|
9
9
|
rd, wr = IO.pipe
|
10
|
-
|
11
|
-
|
10
|
+
Connection.new(nil_io, wr).write("some data").flush
|
11
|
+
data = rd.readpartial(1024)
|
12
|
+
|
13
|
+
expect(MessagePack.unpack(data)).to eq("some data")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#flush" do
|
18
|
+
it "flushes writes to the underlying file descriptor" do
|
19
|
+
rd, wr = IO.pipe
|
20
|
+
connection = Connection.new(nil_io, wr).write("some data")
|
21
|
+
|
22
|
+
expect { connection.flush }
|
23
|
+
.to change { IO.select([rd], nil, nil, 0.01) }
|
24
|
+
.from(nil).to([[rd], [], []])
|
25
|
+
end
|
26
|
+
|
27
|
+
it "throws an exception when the file is closed" do
|
28
|
+
_, wr = IO.pipe
|
29
|
+
connection = Connection.new(nil_io, wr).write("some data")
|
12
30
|
wr.close
|
13
31
|
|
14
|
-
expect
|
32
|
+
expect { connection.flush }.to raise_error(IOError)
|
15
33
|
end
|
16
34
|
end
|
17
35
|
|
@@ -19,11 +37,19 @@ module Neovim
|
|
19
37
|
it "reads msgpack from the underlying file descriptor" do
|
20
38
|
rd, wr = IO.pipe
|
21
39
|
wr.write(MessagePack.pack("some data"))
|
22
|
-
wr.
|
40
|
+
wr.flush
|
23
41
|
|
24
42
|
connection = Connection.new(rd, nil_io)
|
25
43
|
expect(connection.read).to eq("some data")
|
26
44
|
end
|
45
|
+
|
46
|
+
it "throws an exception when the file is closed" do
|
47
|
+
rd, wr = IO.pipe
|
48
|
+
wr.close
|
49
|
+
|
50
|
+
connection = Connection.new(rd, nil_io)
|
51
|
+
expect { connection.read }.to raise_error(EOFError)
|
52
|
+
end
|
27
53
|
end
|
28
54
|
|
29
55
|
describe "#register_type" do
|
@@ -16,7 +16,9 @@ module Neovim
|
|
16
16
|
describe "#request" do
|
17
17
|
it "writes a msgpack request" do
|
18
18
|
event_loop.request(1, :method, 1, 2)
|
19
|
+
connection.flush
|
19
20
|
message = server_rd.readpartial(1024)
|
21
|
+
|
20
22
|
expect(message).to eq(MessagePack.pack([0, 1, "method", [1, 2]]))
|
21
23
|
end
|
22
24
|
end
|
@@ -24,7 +26,9 @@ module Neovim
|
|
24
26
|
describe "#respond" do
|
25
27
|
it "writes a msgpack response" do
|
26
28
|
event_loop.respond(2, "value", "error")
|
29
|
+
connection.flush
|
27
30
|
message = server_rd.readpartial(1024)
|
31
|
+
|
28
32
|
expect(message).to eq(MessagePack.pack([1, 2, "error", "value"]))
|
29
33
|
end
|
30
34
|
end
|
@@ -32,7 +36,9 @@ module Neovim
|
|
32
36
|
describe "#notify" do
|
33
37
|
it "writes a msgpack notification" do
|
34
38
|
event_loop.notify(:method, 1, 2)
|
39
|
+
connection.flush
|
35
40
|
message = server_rd.readpartial(1024)
|
41
|
+
|
36
42
|
expect(message).to eq(MessagePack.pack([2, "method", [1, 2]]))
|
37
43
|
end
|
38
44
|
end
|
data/spec/neovim/session_spec.rb
CHANGED
@@ -24,6 +24,12 @@ module Neovim
|
|
24
24
|
expect(session.request(:nvim_get_current_line)).to eq(large_str)
|
25
25
|
end
|
26
26
|
|
27
|
+
it "raises an exception when a command causes nvim to exit" do
|
28
|
+
expect do
|
29
|
+
session.request(:nvim_command, "qa!")
|
30
|
+
end.to raise_error(Neovim::Session::Exited, /exited/)
|
31
|
+
end
|
32
|
+
|
27
33
|
it "fails outside of the main thread", :silence_thread_exceptions do
|
28
34
|
expect do
|
29
35
|
Thread.new { session.request(:nvim_strwidth, "foo") }.join
|
data/spec/support.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neovim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Genco
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: coveralls
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: pry
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +114,14 @@ dependencies:
|
|
128
114
|
requirements:
|
129
115
|
- - '='
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
117
|
+
version: 0.56.0
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - '='
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
124
|
+
version: 0.56.0
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: vim-flavor
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,7 +144,6 @@ executables:
|
|
158
144
|
extensions: []
|
159
145
|
extra_rdoc_files: []
|
160
146
|
files:
|
161
|
-
- ".coveralls.yml"
|
162
147
|
- ".gitignore"
|
163
148
|
- ".rubocop.yml"
|
164
149
|
- ".travis.yml"
|
@@ -170,7 +155,7 @@ files:
|
|
170
155
|
- Rakefile
|
171
156
|
- VimFlavor
|
172
157
|
- appveyor.yml
|
173
|
-
-
|
158
|
+
- exe/neovim-ruby-host
|
174
159
|
- lib/neovim.rb
|
175
160
|
- lib/neovim/api.rb
|
176
161
|
- lib/neovim/buffer.rb
|
@@ -246,7 +231,7 @@ files:
|
|
246
231
|
- spec/neovim/window_spec.rb
|
247
232
|
- spec/neovim_spec.rb
|
248
233
|
- spec/support.rb
|
249
|
-
homepage: https://github.com/
|
234
|
+
homepage: https://github.com/neovim/neovim-ruby
|
250
235
|
licenses:
|
251
236
|
- MIT
|
252
237
|
metadata: {}
|
@@ -266,7 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
266
251
|
version: '0'
|
267
252
|
requirements: []
|
268
253
|
rubyforge_project:
|
269
|
-
rubygems_version: 2.
|
254
|
+
rubygems_version: 2.7.8
|
270
255
|
signing_key:
|
271
256
|
specification_version: 4
|
272
257
|
summary: A Ruby client for Neovim
|
data/.coveralls.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
service_name: travis-ci
|