neovim 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff45b0d6aaf7cab8f5c5092d9865c05d08d65dd4
4
- data.tar.gz: 37296e52f00a0f027edb8035c7d35e869782cf65
3
+ metadata.gz: 39cfc5e3df7a8ab166fc8b036f9bb73dee269d39
4
+ data.tar.gz: 2ffff11255346e889b896afb1ec90444553c0472
5
5
  SHA512:
6
- metadata.gz: d09d6c4f10345ebaa35d9d1e3eef431dab85d827c7a4045bcbbce56437b03a0598e5c4b683051b3fd992ccd902deb820500ee1101b7de0fddd2e3738daeede7a
7
- data.tar.gz: bc3e6b3734c26b344a88b38fae3c12063fe5e3418c0e23142b226f8c1da6f7a0dee93526a3a77400208a915264365479a8597c8a02fa72416babdc44bc95b0a3
6
+ metadata.gz: 442348e1633ac14d7185fabb38be72f1df180893b87db118609e265e4f059b4153c1b08aec61b74b031d5a79ef8aa4e4db151316629ecf164931fdb9645ada89
7
+ data.tar.gz: b01ba2a5a77b93d8c59481d293602df43574b7724d0bda3fa384fa4ea2f23b2bab51a1aa8539173c2243d756990b6b831d54784d7c709756474974f3cb74d204
@@ -26,5 +26,5 @@ addons:
26
26
  - pkg-config
27
27
 
28
28
  env: REPORT_COVERAGE=1
29
- before_script: bundle exec rake neovim:install
29
+ before_script: travis_retry bundle exec rake neovim:install
30
30
  script: travis_retry bundle exec rake
@@ -1,3 +1,9 @@
1
+ # 0.0.3
2
+
3
+ - Add Buffer#lines enumerable interface
4
+ - Add Window#cursor interface
5
+ - Fix race condition when loading plugins from host
6
+
1
7
  # 0.0.2
2
8
 
3
9
  - Add Neovim.plugin DSL for defining plugins
data/Gemfile CHANGED
@@ -1,2 +1,8 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec
3
+
4
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.0.0")
5
+ gem "pry-byebug"
6
+ else
7
+ gem "pry-debugger"
8
+ end
data/README.md CHANGED
@@ -37,7 +37,7 @@ require "neovim"
37
37
  client = Neovim.attach_unix("/tmp/nvim.sock")
38
38
  ```
39
39
 
40
- The interface of the client is generated at runtime from the `vim_get_api_info` RPC call. For now, you can refer to the Node client's auto-generated [API description](https://github.com/neovim/node-client/blob/master/index.d.ts). Note that methods will be in `snake_case` rather than `camelCase`.
40
+ The client's interface is generated at runtime from the `vim_get_api_info` RPC call. For now, you can refer to the Node client's auto-generated [API description](https://github.com/neovim/node-client/blob/master/index.d.ts). Note that methods will be in `snake_case` rather than `camelCase`.
41
41
 
42
42
  The `neovim-ruby-host` executable can be used to spawn Ruby plugins via the `rpcstart` command. A plugin can be defined like this:
43
43
 
@@ -60,16 +60,16 @@ Neovim.plugin do |plug|
60
60
  end
61
61
  ```
62
62
 
63
- In your `nvim`, you can start this plugin by running `let host = rpcstart("neovim-ruby-host", ["./my_plugin.rb"])`. You can use this channel id to communicate with the host, e.g.
63
+ You can start this plugin via the `rpcstart` nvim function. The resulting channel ID can be used to send requests and notifications to the plugin.
64
+
64
65
  ```viml
65
- let result = rpcrequest(host, "Add", 1, 2)
66
- let result " # => 3
66
+ let host = rpcstart("neovim-ruby-host", ["./my_plugin.rb"])
67
67
 
68
- call rpcnotify(host, "SetLine", "Foo")
69
- " Current line is set to "Foo"
68
+ let result = rpcrequest(host, "Add", 1, 2) " result is set to 3
69
+ call rpcnotify(host, "SetLine", "Foo") " current line is set to 'Foo'
70
70
  ```
71
71
 
72
- Plugin functionality is very limited right now. Besides `command`, the plugin DSL exposes the `function` and `autocmd` directives, however they are functionally identical to `command`. Their purpose is to define a manifest that nvim can load via the `UpdateRemotePlugins` command, which will generate the actual `command`, `function`, and `autocmd` definitions. This piece has not yet been implemented.
72
+ Plugin functionality is very limited right now. Besides `command`, the plugin DSL exposes the `function` and `autocmd` directives, however they are functionally almost identical to `command`. Their purpose is to define a manifest that nvim can load via the `UpdateRemotePlugins` command, which will generate the actual `command`, `function`, and `autocmd` definitions. This piece has not yet been implemented.
73
73
 
74
74
  ## Contributing
75
75
 
@@ -1,3 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
+
2
3
  require "neovim"
3
- Neovim.start_host(ARGV)
4
+
5
+ if $stdin.tty?
6
+ abort("Can't run neovim-ruby-host interactively.")
7
+ else
8
+ Neovim.start_host(ARGV)
9
+ end
@@ -27,7 +27,7 @@ module Neovim
27
27
 
28
28
  def self.plugin(&block)
29
29
  Plugin.from_config_block(&block).tap do |plugin|
30
- __configured_plugins << plugin
30
+ @__configured_plugins << plugin
31
31
  end
32
32
  end
33
33
 
@@ -0,0 +1,74 @@
1
+ require "neovim/object"
2
+
3
+ module Neovim
4
+ class Buffer < Neovim::Object
5
+ def lines
6
+ @lines ||= Lines.new(self)
7
+ end
8
+
9
+ def lines=(arr)
10
+ lines[0..-1] = arr
11
+ end
12
+
13
+ class Lines
14
+ include Enumerable
15
+
16
+ def initialize(buffer)
17
+ @buffer = buffer
18
+ end
19
+
20
+ def ==(other)
21
+ case other
22
+ when Array
23
+ to_a == other
24
+ else
25
+ super
26
+ end
27
+ end
28
+
29
+ def to_a
30
+ self[0..-1]
31
+ end
32
+
33
+ def each(&block)
34
+ to_a.each(&block)
35
+ end
36
+
37
+ def [](idx, len=nil)
38
+ case idx
39
+ when Range
40
+ @buffer.get_line_slice(idx.begin, idx.end, true, !idx.exclude_end?)
41
+ else
42
+ if len
43
+ @buffer.get_line_slice(idx, idx + len, true, false)
44
+ else
45
+ @buffer.get_line(idx)
46
+ end
47
+ end
48
+ end
49
+ alias_method :slice, :[]
50
+
51
+ def []=(*args)
52
+ *target, val = args
53
+ idx, len = target
54
+
55
+ case idx
56
+ when Range
57
+ @buffer.set_line_slice(
58
+ idx.begin,
59
+ idx.end,
60
+ true,
61
+ !idx.exclude_end?,
62
+ val
63
+ )
64
+ else
65
+ if len
66
+ @buffer.set_line_slice(idx, idx + len, true, false, val)
67
+ else
68
+ @buffer.set_line(idx, val)
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -2,6 +2,8 @@ require "neovim/current"
2
2
 
3
3
  module Neovim
4
4
  class Client
5
+ attr_reader :session
6
+
5
7
  def initialize(session)
6
8
  @session = session
7
9
  end
@@ -1,4 +1,6 @@
1
- require "neovim/object"
1
+ require "neovim/buffer"
2
+ require "neovim/tabpage"
3
+ require "neovim/window"
2
4
 
3
5
  module Neovim
4
6
  class Current
@@ -13,7 +13,7 @@ module Neovim
13
13
  end
14
14
 
15
15
  def self.child(argv)
16
- argv = [ENV.fetch("NVIM_EXECUTABLE", "nvim"), "--embed"] | argv.to_ary
16
+ argv = [ENV.fetch("NVIM_EXECUTABLE", "nvim"), "--embed"] | argv
17
17
  io = IO.popen(argv, "rb+")
18
18
  new(io, io)
19
19
  end
@@ -22,15 +22,12 @@ module Neovim
22
22
  def initialize(plugins)
23
23
  @plugins = plugins
24
24
  @handlers = compile_handlers(plugins)
25
+ @event_loop = EventLoop.stdio
26
+ @msgpack_stream = MsgpackStream.new(@event_loop)
27
+ @async_session = AsyncSession.new(@msgpack_stream)
25
28
  end
26
29
 
27
30
  def run
28
- event_loop = EventLoop.stdio
29
- msgpack_stream = MsgpackStream.new(event_loop)
30
- async_session = AsyncSession.new(msgpack_stream)
31
- session = Session.new(async_session)
32
- client = Client.new(session)
33
-
34
31
  notification_callback = Proc.new do |notif|
35
32
  @handlers[:notification][notif.method_name].call(client, notif)
36
33
  end
@@ -39,17 +36,35 @@ module Neovim
39
36
  @handlers[:request][request.method_name].call(client, request)
40
37
  end
41
38
 
42
- async_session.run(request_callback, notification_callback)
39
+ @async_session.run(request_callback, notification_callback)
43
40
  end
44
41
 
45
42
  private
46
43
 
44
+ def client
45
+ @client ||= Client.new(session)
46
+ end
47
+
48
+ def session
49
+ @session ||= Session.new(@async_session)
50
+ end
51
+
47
52
  def compile_handlers(plugins)
53
+ default_req_handler = Proc.new do |_, request|
54
+ request.error("Unknown request #{request.method_name.inspect}")
55
+ end
56
+
57
+ default_ntf_handler = Proc.new {}
58
+
48
59
  base = {
49
- :request => Hash.new(Proc.new {}),
50
- :notification => Hash.new(Proc.new {})
60
+ :request => Hash.new(default_req_handler),
61
+ :notification => Hash.new(default_ntf_handler)
51
62
  }
52
63
 
64
+ base[:request][:poll] = lambda do |_, request|
65
+ request.respond("ok")
66
+ end
67
+
53
68
  plugins.inject(base) do |handlers, plugin|
54
69
  plugin.specs.each do |spec|
55
70
  if spec[:sync]
@@ -37,8 +37,4 @@ module Neovim
37
37
  :"#{function_prefix}#{method_name}"
38
38
  end
39
39
  end
40
-
41
- Buffer = Class.new(Object)
42
- Tabpage = Class.new(Object)
43
- Window = Class.new(Object)
44
40
  end
@@ -6,8 +6,8 @@ module Neovim
6
6
 
7
7
  def initialize(async_session)
8
8
  @async_session = async_session
9
-
10
9
  @api_info = APIInfo.new(request(:vim_get_api_info))
10
+
11
11
  @async_session.register_session(self)
12
12
  end
13
13
 
@@ -0,0 +1,6 @@
1
+ require "neovim/object"
2
+
3
+ module Neovim
4
+ class Tabpage < Neovim::Object
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module Neovim
2
- VERSION = Gem::Version.new("0.0.2")
2
+ VERSION = Gem::Version.new("0.0.3")
3
3
  end
@@ -0,0 +1,39 @@
1
+ require "neovim/object"
2
+
3
+ module Neovim
4
+ class Window < Neovim::Object
5
+ def cursor
6
+ @cursor ||= Cursor.new(self)
7
+ end
8
+
9
+ class Cursor
10
+ def initialize(window)
11
+ @window = window
12
+ end
13
+
14
+ def coordinates
15
+ @window.get_cursor
16
+ end
17
+
18
+ def coordinates=(coords)
19
+ @window.set_cursor(coords)
20
+ end
21
+
22
+ def line
23
+ coordinates[0]
24
+ end
25
+
26
+ def line=(n)
27
+ self.coordinates = [n, column]
28
+ end
29
+
30
+ def column
31
+ coordinates[1]
32
+ end
33
+
34
+ def column=(n)
35
+ self.coordinates = [line, n]
36
+ end
37
+ end
38
+ end
39
+ end
@@ -17,10 +17,11 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^spec/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_dependency "msgpack", "0.7.0dev1"
20
+ spec.add_dependency "msgpack", "~> 0.7"
21
21
 
22
22
  spec.add_development_dependency "bundler"
23
23
  spec.add_development_dependency "rake"
24
- spec.add_development_dependency "rspec", "~> 3.0"
25
- spec.add_development_dependency "coveralls", "~> 0.7.2"
24
+ spec.add_development_dependency "pry"
25
+ spec.add_development_dependency "coveralls"
26
+ spec.add_development_dependency "rspec", "~> 3.0"
26
27
  end
@@ -1,57 +1,58 @@
1
1
  require "helper"
2
- require "tempfile"
2
+ require "tmpdir"
3
3
 
4
4
  RSpec.describe "neovim-ruby-host" do
5
- let(:lib_path) { File.expand_path("../../../lib", __FILE__) }
6
- let(:bin_path) { File.expand_path("../../../bin/neovim-ruby-host", __FILE__) }
7
- let(:nvim_path) { File.expand_path("../../../vendor/neovim/build/bin/nvim", __FILE__) }
8
-
9
5
  specify do
10
- plugin1 = Tempfile.open("plug1") do |f|
11
- f.write(<<-RUBY)
12
- Neovim.plugin do |plug|
13
- plug.command(:SyncAdd, :args => 2, :sync => true) do |nvim, x, y|
14
- x + y
6
+ Dir.mktmpdir do |pwd|
7
+ Dir.chdir(pwd) do
8
+ File.write("./plugin1.rb", <<-RUBY)
9
+ Neovim.plugin do |plug|
10
+ plug.command(:SyncAdd, :args => 2, :sync => true) do |nvim, x, y|
11
+ x + y
12
+ end
15
13
  end
16
- end
17
- RUBY
18
- f.path
19
- end
14
+ RUBY
20
15
 
21
- plugin2 = Tempfile.open("plug2") do |f|
22
- f.write(<<-RUBY)
23
- Neovim.plugin do |plug|
24
- plug.command(:AsyncSetLine, :args => 1) do |nvim, str|
25
- nvim.current.line = str
16
+ File.write("./plugin2.rb", <<-RUBY)
17
+ Neovim.plugin do |plug|
18
+ plug.command(:AsyncSetLine, :args => 1) do |nvim, str|
19
+ nvim.current.line = str
20
+ end
26
21
  end
27
- end
28
- RUBY
29
- f.path
30
- end
22
+ RUBY
31
23
 
32
- output = Tempfile.new("output").tap(&:close).path
33
- host_nvim = Neovim.attach_child(["--headless", "-u", "NONE", "-N", "-n"])
24
+ nvim = Neovim.attach_child(["--headless", "-u", "NONE", "-N", "-n"])
34
25
 
35
- # Start the remote host
36
- host_nvim.command(%{let g:chan = rpcstart("#{bin_path}", ["#{plugin1}", "#{plugin2}"])})
37
- sleep 0.4 # TODO figure out if/why this is necessary
26
+ # Start the remote host
27
+ host_exe = File.expand_path("../../../bin/neovim-ruby-host", __FILE__)
28
+ nvim.command(%{let host = rpcstart("#{host_exe}", ["./plugin1.rb", "./plugin2.rb"])})
38
29
 
39
- # Make a request to the synchronous SyncAdd method and store the results
40
- host_nvim.command(%{let g:res = rpcrequest(g:chan, "SyncAdd", 1, 2)})
30
+ # Send a "poll" request
31
+ expect(nvim.eval(%{rpcrequest(host, "poll")})).to eq("ok")
41
32
 
42
- # Write the results to the buffer
43
- host_nvim.command("put =g:res")
44
- host_nvim.command("normal o")
33
+ # Make a request to the synchronous SyncAdd method and store the result
34
+ nvim.command(%{let result = rpcrequest(host, "SyncAdd", 1, 2)})
45
35
 
46
- # Set the current line content via the AsyncSetLine method
47
- host_nvim.command(%{call rpcnotify(g:chan, "AsyncSetLine", "foo")})
36
+ # Write the result to the buffer
37
+ nvim.command("put =result")
38
+ nvim.command("normal o")
48
39
 
49
- # Ensure notification callback has completed
50
- host_nvim.eval("0")
40
+ # Set the current line via the AsyncSetLine method
41
+ nvim.command(%{call rpcnotify(host, "AsyncSetLine", "foo")})
51
42
 
52
- # Save the contents of the buffer
53
- host_nvim.command("write! #{output}")
43
+ # Make an unknown notification
44
+ expect {
45
+ nvim.command(%{call rpcnotify(host, "Unknown")})
46
+ }.not_to raise_error
54
47
 
55
- expect(File.read(output)).to eq("\n3\nfoo\n")
48
+ # Make an unknown request
49
+ expect {
50
+ nvim.command(%{call rpcrequest(host, "Unknown")})
51
+ }.to raise_error(ArgumentError, /unknown request/i)
52
+
53
+ # Assert the contents of the buffer
54
+ expect(nvim.current.buffer.lines).to eq(["", "3", "foo"])
55
+ end
56
+ end
56
57
  end
57
58
  end
@@ -1,6 +1,6 @@
1
- require "rubygems"
2
1
  require "bundler/setup"
3
2
  require "neovim"
3
+ require "pry"
4
4
  require "timeout"
5
5
 
6
6
  if ENV["REPORT_COVERAGE"]
@@ -0,0 +1,59 @@
1
+ require "helper"
2
+
3
+ module Neovim
4
+ RSpec.describe Buffer do
5
+ let(:client) { Neovim.attach_child(["--headless", "-n", "-u", "NONE"]) }
6
+ let(:buffer) { client.current.buffer }
7
+
8
+ describe "#lines" do
9
+ before do
10
+ client.command("normal i1")
11
+ client.command("normal o2")
12
+ client.command("normal o3")
13
+ end
14
+
15
+ it "returns the buffer's lines as an array" do
16
+ expect(buffer.lines).to eq(["1", "2", "3"])
17
+ end
18
+
19
+ it "can be indexed into" do
20
+ expect(buffer.lines[1]).to eq("2")
21
+ end
22
+
23
+ it "can be sliced with a length" do
24
+ expect(buffer.lines[0, 2]).to eq(["1", "2"])
25
+ end
26
+
27
+ it "can be sliced with a range" do
28
+ expect(buffer.lines[0..1]).to eq(["1", "2"])
29
+ end
30
+
31
+ it "can be updated at an index" do
32
+ buffer.lines[0] = "foo"
33
+ expect(buffer.lines).to eq(["foo", "2", "3"])
34
+ end
35
+
36
+ it "can be updated with a length" do
37
+ buffer.lines[0, 2] = ["foo"]
38
+ expect(buffer.lines).to eq(["foo", "3"])
39
+ end
40
+
41
+ it "can be updated with a range" do
42
+ buffer.lines[0..1] = ["foo"]
43
+ expect(buffer.lines).to eq(["foo", "3"])
44
+ end
45
+
46
+ it "exposes the Enumerable interface" do
47
+ succ_lines = buffer.lines.collect(&:succ)
48
+ expect(succ_lines).to eq(["2", "3", "4"])
49
+ end
50
+ end
51
+
52
+ describe "#lines=" do
53
+ it "updates the buffers lines" do
54
+ buffer.lines = ["one", "two"]
55
+ expect(buffer.lines).to eq(["one", "two"])
56
+ end
57
+ end
58
+ end
59
+ end
@@ -40,8 +40,6 @@ module Neovim
40
40
  plug.command(:Async, :nargs => 2, &async_cb)
41
41
  end
42
42
 
43
- host = Host.new([plugin])
44
-
45
43
  mock_async_session = double(:async_session, :request => nil)
46
44
  expect(AsyncSession).to receive(:new) { mock_async_session }
47
45
 
@@ -73,6 +71,7 @@ module Neovim
73
71
  not_cb.call(mock_notification)
74
72
  end
75
73
 
74
+ host = Host.new([plugin])
76
75
  host.run
77
76
  end
78
77
  end
@@ -1,4 +1,7 @@
1
1
  require "helper"
2
+ require "neovim/buffer"
3
+ require "neovim/tabpage"
4
+ require "neovim/window"
2
5
 
3
6
  module Neovim
4
7
  RSpec.describe Object do
@@ -9,14 +9,18 @@ module Neovim
9
9
  Session.new(async)
10
10
  end
11
11
 
12
- it "exposes a synchronous API" do
13
- expect(session.request(:vim_strwidth, "foobar")).to eq(6)
12
+ it "supports functions with async=false" do
13
+ expect(session.request(:vim_strwidth, "foobar")).to be(6)
14
+ end
15
+
16
+ it "supports functions with async=true" do
17
+ expect(session.request(:vim_input, "jk")).to be(2)
14
18
  end
15
19
 
16
20
  it "raises an exception when there are errors" do
17
21
  expect {
18
22
  session.request(:vim_strwidth, "too", "many")
19
- }.to raise_error("Wrong number of arguments: expecting 1 but got 2")
23
+ }.to raise_error(/wrong number of arguments/i)
20
24
  end
21
25
 
22
26
  describe "#api_methods_for_prefix" do
@@ -0,0 +1,41 @@
1
+ require "helper"
2
+
3
+ module Neovim
4
+ RSpec.describe Window do
5
+ let(:client) { Neovim.attach_child(["--headless", "-n", "-u", "NONE"]) }
6
+ let(:window) { client.current.window }
7
+
8
+ before do
9
+ client.command("normal 3Oabc")
10
+ client.command("normal gg")
11
+ end
12
+
13
+ describe "#cursor" do
14
+ it "moves line-wise" do
15
+ expect {
16
+ window.cursor.line += 1
17
+ }.to change { window.cursor.coordinates }.from([1, 0]).to([2, 0])
18
+
19
+ expect {
20
+ window.cursor.line -= 1
21
+ }.to change { window.cursor.coordinates }.from([2, 0]).to([1, 0])
22
+ end
23
+
24
+ it "moves column-wise" do
25
+ expect {
26
+ window.cursor.column += 1
27
+ }.to change { window.cursor.coordinates }.from([1, 0]).to([1, 1])
28
+
29
+ expect {
30
+ window.cursor.column -= 1
31
+ }.to change { window.cursor.coordinates }.from([1, 1]).to([1, 0])
32
+ end
33
+
34
+ it "moves to an absolute position" do
35
+ expect {
36
+ window.cursor.coordinates = [1, 1]
37
+ }.to change { window.cursor.coordinates }.to([1, 1])
38
+ end
39
+ end
40
+ end
41
+ end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neovim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Genco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-08 00:00:00.000000000 Z
11
+ date: 2015-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.7.0dev1
19
+ version: '0.7'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.7.0dev1
26
+ version: '0.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,33 +53,47 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec
56
+ name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '3.0'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '3.0'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: coveralls
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: 0.7.2
89
+ version: '3.0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: 0.7.2
96
+ version: '3.0'
83
97
  description:
84
98
  email:
85
99
  - alexgenco@gmail.com
@@ -101,6 +115,7 @@ files:
101
115
  - lib/neovim.rb
102
116
  - lib/neovim/api_info.rb
103
117
  - lib/neovim/async_session.rb
118
+ - lib/neovim/buffer.rb
104
119
  - lib/neovim/client.rb
105
120
  - lib/neovim/current.rb
106
121
  - lib/neovim/event_loop.rb
@@ -111,11 +126,14 @@ files:
111
126
  - lib/neovim/plugin.rb
112
127
  - lib/neovim/request.rb
113
128
  - lib/neovim/session.rb
129
+ - lib/neovim/tabpage.rb
114
130
  - lib/neovim/version.rb
131
+ - lib/neovim/window.rb
115
132
  - neovim.gemspec
116
133
  - spec/acceptance/neovim-ruby-host_spec.rb
117
134
  - spec/helper.rb
118
135
  - spec/neovim/async_session_spec.rb
136
+ - spec/neovim/buffer_spec.rb
119
137
  - spec/neovim/client_spec.rb
120
138
  - spec/neovim/current_spec.rb
121
139
  - spec/neovim/event_loop_spec.rb
@@ -124,6 +142,7 @@ files:
124
142
  - spec/neovim/object_spec.rb
125
143
  - spec/neovim/plugin_spec.rb
126
144
  - spec/neovim/session_spec.rb
145
+ - spec/neovim/window_spec.rb
127
146
  - spec/neovim_spec.rb
128
147
  homepage: https://github.com/alexgenco/neovim-ruby
129
148
  licenses:
@@ -145,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
164
  version: '0'
146
165
  requirements: []
147
166
  rubyforge_project:
148
- rubygems_version: 2.4.6
167
+ rubygems_version: 2.4.5
149
168
  signing_key:
150
169
  specification_version: 4
151
170
  summary: A Ruby client for Neovim
@@ -153,6 +172,7 @@ test_files:
153
172
  - spec/acceptance/neovim-ruby-host_spec.rb
154
173
  - spec/helper.rb
155
174
  - spec/neovim/async_session_spec.rb
175
+ - spec/neovim/buffer_spec.rb
156
176
  - spec/neovim/client_spec.rb
157
177
  - spec/neovim/current_spec.rb
158
178
  - spec/neovim/event_loop_spec.rb
@@ -161,4 +181,5 @@ test_files:
161
181
  - spec/neovim/object_spec.rb
162
182
  - spec/neovim/plugin_spec.rb
163
183
  - spec/neovim/session_spec.rb
184
+ - spec/neovim/window_spec.rb
164
185
  - spec/neovim_spec.rb