neovim 0.2.5 → 0.3.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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +10 -0
  4. data/lib/neovim/current.rb +19 -2
  5. data/lib/neovim/host.rb +3 -11
  6. data/lib/neovim/host/loader.rb +0 -2
  7. data/lib/neovim/line_range.rb +14 -2
  8. data/lib/neovim/plugin.rb +1 -4
  9. data/lib/neovim/plugin/dsl.rb +6 -14
  10. data/lib/neovim/plugin/handler.rb +2 -9
  11. data/lib/neovim/ruby_provider.rb +9 -15
  12. data/lib/neovim/session.rb +23 -70
  13. data/lib/neovim/session/api.rb +61 -0
  14. data/lib/neovim/session/event_loop.rb +108 -0
  15. data/lib/neovim/session/notification.rb +19 -0
  16. data/lib/neovim/session/request.rb +31 -0
  17. data/lib/neovim/session/rpc.rb +95 -0
  18. data/lib/neovim/session/serializer.rb +62 -0
  19. data/lib/neovim/version.rb +1 -1
  20. data/neovim.gemspec +1 -1
  21. data/spec/acceptance/neovim-ruby-host_spec.rb +0 -5
  22. data/spec/acceptance/ruby_provider_spec.rb +35 -3
  23. data/spec/helper.rb +33 -2
  24. data/spec/neovim/host_spec.rb +1 -1
  25. data/spec/neovim/plugin_spec.rb +2 -2
  26. data/spec/neovim/session/api_spec.rb +46 -0
  27. data/spec/neovim/session/event_loop_spec.rb +99 -0
  28. data/spec/neovim/session/rpc_spec.rb +108 -0
  29. data/spec/neovim/session/serializer_spec.rb +48 -0
  30. data/spec/neovim/session_spec.rb +1 -1
  31. metadata +16 -18
  32. data/lib/neovim/api.rb +0 -80
  33. data/lib/neovim/async_session.rb +0 -119
  34. data/lib/neovim/event_loop.rb +0 -128
  35. data/lib/neovim/msgpack_stream.rb +0 -80
  36. data/lib/neovim/notification.rb +0 -17
  37. data/lib/neovim/request.rb +0 -29
  38. data/spec/neovim/api_spec.rb +0 -44
  39. data/spec/neovim/async_session_spec.rb +0 -106
  40. data/spec/neovim/event_loop_spec.rb +0 -97
  41. data/spec/neovim/msgpack_stream_spec.rb +0 -46
  42. data/spec/support.rb +0 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 94299b85fc9c539d812062822342c89a47b0d829
4
- data.tar.gz: 225a197bab993d300596743292de0823ee994e9a
3
+ metadata.gz: e51184d65bdcfaf91be38f7ed8f794d1971e2bcd
4
+ data.tar.gz: e5900e2d8a0849a2b7c195a701d07b4270ccf4e0
5
5
  SHA512:
6
- metadata.gz: c641e29939e3f02a8e788cbf88e7b6eb4c4310a19b0825f86cebef93a33bbe62658fa48518c46c3d43a8d270eda169ec3e45355fc7becd38235189d637c18b0b
7
- data.tar.gz: 83d1e66f8ff9fa729223a12a063e3b3268894d7a1d004b2bedb0c9da8e416cb7043f955f5d1bfc8c05ccf88e6a88c10567949f237c7fb3f5f127d37f74289f6f
6
+ metadata.gz: 908119d756874c8d76e42056e2a99e009c0dc19dde6c865e9d0cbee9e33b4b1c485d08e9bf54fbfdf374f00518461122c3fe66b5119612b56afb6383319e5a9b
7
+ data.tar.gz: 097c4a2565b01b6b6cb785601de2f526ec3c7b091f7fcd054b2ab87ea5d05acb27815f8abda84b665bcbc9e1ba4dde1883ed4fc88249d34cbafd2f26eab09f5a
@@ -10,6 +10,7 @@ rvm:
10
10
  - 2.1.0
11
11
  - 2.2.0
12
12
  - 2.3.0
13
+ - ruby-head
13
14
 
14
15
  before_install:
15
16
  - eval "$(curl -Ss https://raw.githubusercontent.com/neovim/bot-ci/master/scripts/travis-setup.sh) nightly-x64"
@@ -1,3 +1,13 @@
1
+ # 0.3.0
2
+ - Mark `Plugin::DSL#rpc` private
3
+ - Rename Session constants:
4
+ - `Neovim::EventLoop` -> `Neovim::Session::EventLoop`
5
+ - `Neovim::MsgpackStream` -> `Neovim::Session::Serializer`
6
+ - `Neovim::AsyncSession` -> `Neovim::Session::RPC`
7
+ - `Neovim::API` -> `Neovim::Session::API`
8
+ - `Neovim::Request` -> `Neovim::Session::Request`
9
+ - `Neovim::Notification` -> `Neovim::Session::Notification`
10
+
1
11
  # 0.2.5
2
12
  - Optimize remote function lookup
3
13
  - Fix bug where $curbuf and $curwin weren't persisting instance state between
@@ -3,27 +3,32 @@ require "neovim/tabpage"
3
3
  require "neovim/window"
4
4
 
5
5
  module Neovim
6
- # Support for +client.current+ chaining.
6
+ # Support for +Client#current+ chaining.
7
7
  #
8
8
  # @see Client#current
9
- # @api private
10
9
  class Current
11
10
  def initialize(session)
12
11
  @session = session
13
12
  @range = (0..-1)
14
13
  end
15
14
 
15
+ # Get the line under the cursor.
16
+ #
16
17
  # @return [String]
17
18
  def line
18
19
  @session.request(:vim_get_current_line)
19
20
  end
20
21
 
22
+ # Set the line under the cursor.
23
+ #
21
24
  # @param line [String] The target line contents.
22
25
  # @return [String]
23
26
  def line=(line)
24
27
  @session.request(:vim_set_current_line, line)
25
28
  end
26
29
 
30
+ # Get the active buffer.
31
+ #
27
32
  # @return [Buffer]
28
33
  def buffer
29
34
  @session.request(:vim_get_current_buffer).tap do |buf|
@@ -31,34 +36,46 @@ module Neovim
31
36
  end
32
37
  end
33
38
 
39
+ # Set the active buffer.
40
+ #
34
41
  # @param buffer [Buffer, Fixnum] The target buffer or index.
35
42
  # @return [Buffer, Fixnum]
36
43
  def buffer=(buffer)
37
44
  @session.request(:vim_set_current_buffer, buffer)
38
45
  end
39
46
 
47
+ # Get the active window.
48
+ #
40
49
  # @return [Window]
41
50
  def window
42
51
  @session.request(:vim_get_current_window)
43
52
  end
44
53
 
54
+ # Set the active window.
55
+ #
45
56
  # @param window [Window, Fixnum] The target window or index.
46
57
  # @return [Window, Fixnum]
47
58
  def window=(window)
48
59
  @session.request(:vim_set_current_window, window)
49
60
  end
50
61
 
62
+ # Get the active tabpage.
63
+ #
51
64
  # @return [Tabpage]
52
65
  def tabpage
53
66
  @session.request(:vim_get_current_tabpage)
54
67
  end
55
68
 
69
+ # Set the active tabpage.
70
+ #
56
71
  # @param tabpage [Tabpage, Fixnum] The target tabpage or index.
57
72
  # @return [Tabpage, Fixnum]
58
73
  def tabpage=(tabpage)
59
74
  @session.request(:vim_set_current_tabpage, tabpage)
60
75
  end
61
76
 
77
+ # Set the current line range of the current buffer.
78
+ #
62
79
  # @param range [Range] The target range
63
80
  def range=(range)
64
81
  @range = range
@@ -9,10 +9,6 @@ module Neovim
9
9
  attr_reader :handlers, :specs
10
10
 
11
11
  # Initialize and populate a +Host+ from a list of plugin paths.
12
- #
13
- # @param rplugin_paths [Array<String>]
14
- # @return [Host]
15
- # @see Loader#load
16
12
  def self.load_from_files(rplugin_paths, options={})
17
13
  session = options.fetch(:session) { Session.stdio }
18
14
  client = options.fetch(:client) { Client.new(session) }
@@ -30,8 +26,6 @@ module Neovim
30
26
  end
31
27
 
32
28
  # Register a +Plugin+ to receive +Host+ messages.
33
- #
34
- # @param plugin [Plugin]
35
29
  def register(plugin)
36
30
  plugin.handlers.each do |handler|
37
31
  @handlers[handler.qualified_name] = wrap_plugin_handler(handler)
@@ -41,8 +35,6 @@ module Neovim
41
35
  end
42
36
 
43
37
  # Run the event loop, passing received messages to the appropriate handler.
44
- #
45
- # @return [void]
46
38
  def run
47
39
  @session.run { |msg| handle(msg) }
48
40
  rescue => e
@@ -52,9 +44,6 @@ module Neovim
52
44
 
53
45
  # Handle messages received from the host. Sends a +Neovim::Client+ along
54
46
  # with the message to be used in plugin callbacks.
55
- #
56
- # @param message [Neovim::Request, Neovim::Notification]
57
- # @param client [Neovim::Client]
58
47
  def handle(message)
59
48
  debug("received #{message.inspect}")
60
49
 
@@ -102,9 +91,12 @@ module Neovim
102
91
  debug("received #{message.inspect}")
103
92
  args = message.arguments.flatten(1)
104
93
  result = handler.call(client, *args)
94
+
105
95
  message.respond(result) if message.sync?
106
96
  rescue => e
107
97
  warn("got unexpected error #{e.inspect}")
98
+ debug(e.backtrace.join("\n"))
99
+
108
100
  message.error(e.message) if message.sync?
109
101
  end
110
102
  end
@@ -9,8 +9,6 @@ module Neovim
9
9
  # Load the provided Ruby files while temporarily overriding
10
10
  # +Neovim.plugin+ to expose the remote plugin DSL and register the result
11
11
  # to the host.
12
- #
13
- # @param paths [Array<String>]
14
12
  def load(paths)
15
13
  paths.each do |path|
16
14
  override_plugin_method(path) do
@@ -1,7 +1,5 @@
1
1
  module Neovim
2
2
  # Provide an enumerable interface for dealing with ranges of lines.
3
- #
4
- # @api private
5
3
  class LineRange
6
4
  include Enumerable
7
5
 
@@ -11,17 +9,23 @@ module Neovim
11
9
  @end = _end
12
10
  end
13
11
 
12
+ # Resolve to an array of lines as strings.
13
+ #
14
14
  # @return [Array<String>]
15
15
  def to_a
16
16
  @buffer.get_line_slice(@begin, @end, true, true)
17
17
  end
18
18
 
19
+ # Yield each line in the range.
20
+ #
19
21
  # @yield [String] The current line
20
22
  # @return [Array<String>]
21
23
  def each(&block)
22
24
  to_a.each(&block)
23
25
  end
24
26
 
27
+ # Access the line at the given index within the range.
28
+ #
25
29
  # @overload [](index)
26
30
  # @param index [Fixnum]
27
31
  #
@@ -60,6 +64,8 @@ module Neovim
60
64
  end
61
65
  alias_method :slice, :[]
62
66
 
67
+ # Set the line at the given index within the range.
68
+ #
63
69
  # @overload []=(index, string)
64
70
  # @param index [Fixnum]
65
71
  # @param string [String]
@@ -107,18 +113,24 @@ module Neovim
107
113
  end
108
114
  end
109
115
 
116
+ # Replace the range of lines.
117
+ #
110
118
  # @param other [Array] The replacement lines
111
119
  def replace(other)
112
120
  self[0..-1] = other
113
121
  self
114
122
  end
115
123
 
124
+ # Insert line(s) at the given index within the range.
125
+ #
116
126
  # @param index [Fixnum]
117
127
  # @param lines [String]
118
128
  def insert(index, lines)
119
129
  @buffer.insert(index, Array(lines))
120
130
  end
121
131
 
132
+ # Delete the line at the given index within the range.
133
+ #
122
134
  # @param index [Fixnum]
123
135
  def delete(index)
124
136
  @buffer.del_line(abs_line(index))
@@ -7,9 +7,6 @@ module Neovim
7
7
  attr_reader :source
8
8
 
9
9
  # Entrypoint to the +Neovim.plugin+ DSL.
10
- #
11
- # @param source [String] The path of the plugin file.
12
- # @yield [DSL] The receiver of DSL methods.
13
10
  def self.from_config_block(source)
14
11
  new(source).tap do |instance|
15
12
  yield DSL.new(instance) if block_given?
@@ -21,7 +18,7 @@ module Neovim
21
18
  @source = source
22
19
  end
23
20
 
24
- # @return [Array] Handler specs used by +nvim+ to register plugins.
21
+ # Return specs used by +nvim+ to register plugins.
25
22
  def specs
26
23
  @handlers.inject([]) do |acc, handler|
27
24
  handler.qualified? ? acc + [handler.to_spec] : acc
@@ -66,23 +66,15 @@ module Neovim
66
66
  register_handler(:autocmd, event, options, block)
67
67
  end
68
68
 
69
- # Register a top-level remote procedure call (RPC).
70
- #
71
- # This can be used to directly expose an RPC call without a namespace.
72
- # This is used primarily for exposing legacy ruby provider calls.
73
- #
74
- # @option options [Boolean] :sync (false) Whether +nvim+ should receive
75
- # the return value of the block.
76
- def rpc(name, options={}, &block)
77
- sync = options.delete(:sync)
69
+ private
78
70
 
79
- @plugin.handlers.push(
80
- Handler.unqualified(name, sync, options, block)
81
- )
71
+ # Directly define a synchronous RPC call without a namespace. This is
72
+ # used for exposing legacy ruby provider calls, and not meant to be used
73
+ # publicly in plugin definitions.
74
+ def rpc(name, &block)
75
+ @plugin.handlers.push(Handler.unqualified(name, block))
82
76
  end
83
77
 
84
- private
85
-
86
78
  def register_handler(type, name, _options, block)
87
79
  if type == :autocmd
88
80
  options = _options.dup
@@ -4,15 +4,8 @@ module Neovim
4
4
  class Handler
5
5
  attr_reader :block
6
6
 
7
- def self.unqualified(name, sync, options, block)
8
- new(
9
- nil,
10
- nil,
11
- name,
12
- sync,
13
- options.merge(:qualified => false),
14
- block
15
- )
7
+ def self.unqualified(name, block)
8
+ new(nil, nil, name, true, {:qualified => false}, block)
16
9
  end
17
10
 
18
11
  def initialize(source, type, name, sync, options, block)
@@ -5,7 +5,7 @@ require "neovim/ruby_provider/window_ext"
5
5
  module Neovim
6
6
  # This class is used to define a +Neovim::Plugin+ to act as a backend for the
7
7
  # legacy +:ruby+, +:rubyfile+, and +:rubydo+ Vim commands. It is autoloaded
8
- # from +nvim+ and not intended to be loaded directly.
8
+ # from +nvim+ and not intended to be required directly.
9
9
  #
10
10
  # @api private
11
11
  module RubyProvider
@@ -24,7 +24,7 @@ module Neovim
24
24
  #
25
25
  # This is used by the +:ruby+ command.
26
26
  def self.__define_ruby_execute(plug)
27
- plug.rpc(:ruby_execute, sync: true) do |nvim, ruby|
27
+ plug.__send__(:rpc, :ruby_execute) do |nvim, ruby|
28
28
  __wrap_client(nvim) do
29
29
  eval(ruby, TOPLEVEL_BINDING, __FILE__, __LINE__)
30
30
  end
@@ -37,7 +37,7 @@ module Neovim
37
37
  #
38
38
  # This is used by the +:rubyfile+ command.
39
39
  def self.__define_ruby_execute_file(plug)
40
- plug.rpc(:ruby_execute_file, sync: true) do |nvim, path|
40
+ plug.__send__(:rpc, :ruby_execute_file) do |nvim, path|
41
41
  __wrap_client(nvim) { load(path) }
42
42
  end
43
43
  end
@@ -52,7 +52,7 @@ module Neovim
52
52
  #
53
53
  # This is used by the +:rubydo+ command.
54
54
  def self.__define_ruby_do_range(__plug)
55
- __plug.rpc(:ruby_do_range, sync: true) do |__nvim, *__args|
55
+ __plug.__send__(:rpc, :ruby_do_range) do |__nvim, *__args|
56
56
  __wrap_client(__nvim) do
57
57
  __start, __stop, __ruby = __args
58
58
  __buffer = __nvim.get_current_buffer
@@ -69,7 +69,6 @@ module Neovim
69
69
  end
70
70
  private_class_method :__define_ruby_do_range
71
71
 
72
- # @api private
73
72
  def self.__wrap_client(client)
74
73
  __with_globals(client) do
75
74
  __with_vim_constant(client) do
@@ -82,34 +81,30 @@ module Neovim
82
81
  end
83
82
  private_class_method :__wrap_client
84
83
 
85
- # @api private
86
84
  def self.__with_globals(client)
87
85
  @__buffer_cache ||= {}
88
86
  @__window_cache ||= {}
89
87
 
90
- __bufnr = client.evaluate("bufnr('%')")
91
- __winnr = client.evaluate("winnr()")
88
+ bufnr, winnr = client.evaluate("[bufnr('%'), winnr()]")
92
89
 
93
- $curbuf = @__buffer_cache.fetch(__bufnr) do
94
- @__buffer_cache[__bufnr] = client.get_current_buffer
90
+ $curbuf = @__buffer_cache.fetch(bufnr) do
91
+ @__buffer_cache[bufnr] = client.get_current_buffer
95
92
  end
96
93
 
97
- $curwin = @__window_cache.fetch(__winnr) do
98
- @__window_cache[__winnr] = client.get_current_window
94
+ $curwin = @__window_cache.fetch(winnr) do
95
+ @__window_cache[winnr] = client.get_current_window
99
96
  end
100
97
 
101
98
  yield
102
99
  end
103
100
  private_class_method :__with_globals
104
101
 
105
- # @api private
106
102
  def self.__with_vim_constant(client)
107
103
  ::VIM.__client = client
108
104
  yield
109
105
  end
110
106
  private_class_method :__with_vim_constant
111
107
 
112
- # @api private
113
108
  def self.__with_redirect_streams(client)
114
109
  @__with_redirect_streams ||= begin
115
110
  $stdout.define_singleton_method(:write) do |string|
@@ -127,7 +122,6 @@ module Neovim
127
122
  end
128
123
  private_class_method :__with_redirect_streams
129
124
 
130
- # @api private
131
125
  def self.__update_lines_in_chunks(buffer, start, stop, size)
132
126
  (start..stop).each_slice(size) do |linenos|
133
127
  _start, _stop = linenos[0]-1, linenos[-1]
@@ -1,63 +1,47 @@
1
- require "neovim/api"
2
- require "neovim/async_session"
3
- require "neovim/event_loop"
4
1
  require "neovim/logging"
5
- require "neovim/msgpack_stream"
2
+ require "neovim/session/api"
3
+ require "neovim/session/event_loop"
4
+ require "neovim/session/rpc"
5
+ require "neovim/session/serializer"
6
6
  require "fiber"
7
7
 
8
8
  module Neovim
9
- # Wraps an +AsyncSession+ in a synchronous API using +Fiber+s.
9
+ # Wraps a +Session::RPC+ in a synchronous API using +Fiber+s.
10
10
  #
11
11
  # @api private
12
12
  class Session
13
13
  include Logging
14
14
 
15
15
  # Connect to a TCP socket.
16
- #
17
- # @param host [String] The hostname or IP address
18
- # @param port [Fixnum] The port
19
- # @return [Session]
20
- # @see EventLoop.tcp
21
16
  def self.tcp(host, port)
22
17
  from_event_loop(EventLoop.tcp(host, port))
23
18
  end
24
19
 
25
20
  # Connect to a UNIX domain socket.
26
- #
27
- # @param socket_path [String] The socket path
28
- # @return [Session]
29
- # @see EventLoop.unix
30
21
  def self.unix(socket_path)
31
22
  from_event_loop(EventLoop.unix(socket_path))
32
23
  end
33
24
 
34
25
  # Spawn and connect to a child +nvim+ process.
35
- #
36
- # @param argv [Array] The arguments to pass to the spawned process
37
- # @return [Session]
38
- # @see EventLoop.child
39
26
  def self.child(argv)
40
27
  from_event_loop(EventLoop.child(argv))
41
28
  end
42
29
 
43
30
  # Connect to the current process's standard streams. This is used to
44
31
  # promote the current process to a Ruby plugin host.
45
- #
46
- # @return [Session]
47
- # @see EventLoop.stdio
48
32
  def self.stdio
49
33
  from_event_loop(EventLoop.stdio)
50
34
  end
51
35
 
52
36
  def self.from_event_loop(event_loop)
53
- msgpack_stream = MsgpackStream.new(event_loop)
54
- async_session = AsyncSession.new(msgpack_stream)
55
- new(async_session)
37
+ serializer = Serializer.new(event_loop)
38
+ rpc = RPC.new(serializer)
39
+ new(rpc)
56
40
  end
57
41
  private_class_method :from_event_loop
58
42
 
59
- def initialize(async_session)
60
- @async_session = async_session
43
+ def initialize(rpc)
44
+ @rpc = rpc
61
45
  @pending_messages = []
62
46
  @main_thread = Thread.current
63
47
  @main_fiber = Fiber.current
@@ -66,31 +50,19 @@ module Neovim
66
50
 
67
51
  # Return the +nvim+ API as described in the +vim_get_api_info+ call.
68
52
  # Defaults to empty API information.
69
- #
70
- # @return [API]
71
- # @see API.null
72
53
  def api
73
54
  @api ||= API.null
74
55
  end
75
56
 
76
57
  # Discover the +nvim+ API as described in the +vim_get_api_info+ call,
77
58
  # propagating it down to lower layers of the stack.
78
- #
79
- # @return [API]
80
- # @see API
81
59
  def discover_api
82
60
  @api = API.new(request(:vim_get_api_info)).tap do |api|
83
- @async_session.msgpack_stream.register_types(api, self)
61
+ @rpc.serializer.register_types(api, self)
84
62
  end
85
63
  end
86
64
 
87
65
  # Run the event loop, handling messages in a +Fiber+.
88
- #
89
- # @yield [Object]
90
- # @return [void]
91
- # @see AsyncSession#run
92
- # @see MsgpackStream#run
93
- # @see EventLoop#run
94
66
  def run
95
67
  @running = true
96
68
 
@@ -100,7 +72,7 @@ module Neovim
100
72
 
101
73
  return unless @running
102
74
 
103
- @async_session.run do |message|
75
+ @rpc.run do |message|
104
76
  Fiber.new { yield message if block_given? }.resume
105
77
  end
106
78
  ensure
@@ -117,11 +89,6 @@ module Neovim
117
89
  # If this method is called outside a callback, write to the stream and
118
90
  # run the event loop until a response is received. Messages received
119
91
  # in the meantime are enqueued to be handled later.
120
- #
121
- # @param method [String, Symbol] The RPC method name
122
- # @param *args [Array] The RPC method arguments
123
- # @return [Object] The response from the RPC call
124
- # @raise [ArgumentError] An error returned from +nvim+
125
92
  def request(method, *args)
126
93
  main_thread_only do
127
94
  if Fiber.current == @main_fiber
@@ -136,48 +103,34 @@ module Neovim
136
103
  end
137
104
  end
138
105
 
139
- # Make an RPC notification.
140
- #
141
- # @param method [String, Symbol] The RPC method name
142
- # @param *args [Array] The RPC method arguments
143
- # @return [nil]
106
+ # Make an RPC notification. +nvim+ will not block waiting for a response.
144
107
  def notify(method, *args)
145
108
  main_thread_only do
146
- @async_session.notify(method, *args)
109
+ @rpc.notify(method, *args)
147
110
  nil
148
111
  end
149
112
  end
150
113
 
151
- # Stop the event loop.
152
- #
153
- # @return [void]
154
- # @see EventLoop#stop
114
+ # Return the channel ID if registered via +vim_get_api_info+.
115
+ def channel_id
116
+ api.channel_id
117
+ end
118
+
155
119
  def stop
156
120
  @running = false
157
- @async_session.stop
121
+ @rpc.stop
158
122
  end
159
123
 
160
- # Shut down the event loop.
161
- #
162
- # @return [void]
163
- # @see EventLoop#shutdown
164
124
  def shutdown
165
125
  @running = false
166
- @async_session.shutdown
167
- end
168
-
169
- # Return the channel ID if registered via +vim_get_api_info+.
170
- #
171
- # @return [Fixnum, nil]
172
- def channel_id
173
- api.channel_id
126
+ @rpc.shutdown
174
127
  end
175
128
 
176
129
  private
177
130
 
178
131
  def running_request(method, *args)
179
132
  fiber = Fiber.current
180
- @async_session.request(method, *args) do |err, res|
133
+ @rpc.request(method, *args) do |err, res|
181
134
  fiber.resume(err, res)
182
135
  end
183
136
  Fiber.yield
@@ -186,7 +139,7 @@ module Neovim
186
139
  def stopped_request(method, *args)
187
140
  error, result = nil
188
141
 
189
- @async_session.request(method, *args) do |err, res|
142
+ @rpc.request(method, *args) do |err, res|
190
143
  error, result = err, res
191
144
  stop
192
145
  end.run do |message|