nvim 1.0.0 → 1.1.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.
@@ -12,7 +12,7 @@ module Neovim
12
12
  TYPE = :rplugin
13
13
 
14
14
  def initialize source
15
- super
15
+ super *[]
16
16
  @source = source
17
17
  end
18
18
 
data/lib/neovim.rb CHANGED
@@ -7,13 +7,23 @@ require "neovim/host"
7
7
 
8
8
  module Neovim
9
9
 
10
+ class Job < Provider
11
+
12
+ def initialize plugins, conn
13
+ super plugins, conn
14
+ start
15
+ end
16
+
17
+ end
18
+
10
19
  class <<self
11
20
 
12
21
  def start_remote &block
13
- Host.run do |h|
14
- DslRemote.open :remote, h, &block
15
- h.start
16
- end
22
+ Job.run mk_plugins &block
23
+ end
24
+
25
+ def mk_plugins &block
26
+ { remote: (DslRemote.open &block) }
17
27
  end
18
28
 
19
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nvim
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-13 00:00:00.000000000 Z
11
+ date: 2024-08-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: software@bertram-scharpf.de
@@ -29,18 +29,19 @@ files:
29
29
  - lib/neovim/foreign/mplight/bufferio.rb
30
30
  - lib/neovim/foreign/supplement.rb
31
31
  - lib/neovim/foreign/supplement/socket.rb
32
+ - lib/neovim/foreign/xxd.rb
32
33
  - lib/neovim/handler.rb
33
34
  - lib/neovim/host.rb
34
35
  - lib/neovim/info.rb
35
36
  - lib/neovim/logging.rb
36
- - lib/neovim/messager.rb
37
37
  - lib/neovim/meta.rb
38
+ - lib/neovim/output.rb
38
39
  - lib/neovim/remote.rb
39
40
  - lib/neovim/remote_object.rb
40
41
  - lib/neovim/ruby_provider.rb
41
- - lib/neovim/session.rb
42
+ - lib/neovim/tools/copy.rb
42
43
  - lib/neovim/vimscript_provider.rb
43
- homepage: http://bertram-scharpf.de
44
+ homepage: https://github.com/BertramScharpf/ruby-nvim
44
45
  licenses:
45
46
  - BSD-2-Clause+
46
47
  metadata: {}
@@ -59,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
61
62
  requirements: []
62
- rubygems_version: 3.5.6
63
+ rubygems_version: 3.5.14
63
64
  signing_key:
64
65
  specification_version: 4
65
66
  summary: Yet another Ruby client for Neovim
@@ -1,185 +0,0 @@
1
- #
2
- # neovim/messager.rb -- Send and Receive Messages
3
- #
4
-
5
- require "neovim/foreign/supplement"
6
-
7
- require "neovim/logging"
8
-
9
-
10
- module Neovim
11
-
12
- class Messager
13
-
14
- class Message
15
-
16
- @subs, @subh = [], {}
17
-
18
- class <<self
19
-
20
- def from_array ary
21
- kind, *payload = *ary
22
- klass = find kind
23
- klass[ *payload]
24
- end
25
-
26
- def inherited cls ; @subs.push cls ; end
27
- def find id
28
- @subh[ id] ||= @subs.find { |c| c::ID == id }
29
- end
30
-
31
- alias [] new
32
-
33
- end
34
-
35
- def initialize *args
36
- z = self.class::KEYS.zip args
37
- @cont = z.inject Hash.new do |c,(h,k)| c[h] = k ; c end
38
- end
39
-
40
- def inspect
41
- c = self.class.name.sub /.*::/, ""
42
- "#<#{c} #@cont>"
43
- end
44
-
45
- def to_s
46
- c = self.class.name.sub /.*::/, ""
47
- j = @cont.map { |k,v| "#{k}:#{v}" if v }.compact.join ","
48
- "#{c}(#{j})"
49
- end
50
-
51
- def method_missing sym, *args
52
- if @cont.key? sym then @cont[ sym] else super end
53
- end
54
-
55
- def respond_to_missing? sym, priv = nil
56
- @cont.key? sym.to_sym
57
- end
58
-
59
- def methods *args
60
- super.concat @cont.keys
61
- end
62
-
63
- def to_h ; @cont ; end
64
-
65
- def fields ; @cont.fetch_values *self.class::KEYS ; end
66
-
67
- def to_a
68
- [self.class::ID, *fields]
69
- end
70
-
71
- class Request < Message
72
- ID = 0
73
- KEYS = %i(request_id method_name arguments)
74
- end
75
-
76
- class Response < Message
77
- ID = 1
78
- KEYS = %i(request_id error value)
79
- def initialize *args
80
- super
81
- e = @cont[ :error]
82
- if e and not Array === e then
83
- @cont[ :error] = [0, e]
84
- end
85
- end
86
-
87
- end
88
-
89
- class Notification < Message
90
- ID = 2
91
- KEYS = %i(method_name arguments)
92
- end
93
-
94
- end
95
-
96
- class ResponseError < StandardError ; end
97
-
98
- class Disconnected < RuntimeError
99
- def initialize
100
- super "Lost connection to nvim process"
101
- end
102
- end
103
-
104
-
105
- include Logging
106
-
107
- def initialize conn, session
108
- @conn, @session = conn, session
109
- @request_id = 0
110
- @responses = {}
111
- end
112
-
113
- def run until_id = nil
114
- loop do
115
- message = get
116
- case message
117
- when Message::Response then
118
- if @responses.key? message.request_id then
119
- @responses[ message.request_id] = message
120
- else
121
- log :warning, "Dropped response", message.request_id
122
- end
123
- when Message::Request then
124
- begin
125
- r = @session.execute_handler message.method_name, message.arguments
126
- log :debug1, "Request result", result: r
127
- rescue
128
- e = [ 0, $!.to_s]
129
- log_exception :error
130
- end
131
- rsp = Message::Response.new message.request_id, e, r
132
- put rsp
133
- when Message::Notification then
134
- begin
135
- @session.execute_handler message.method_name, message.arguments
136
- rescue
137
- log_exception :error
138
- end
139
- end
140
- break if until_id and @responses[ until_id]
141
- end
142
- end
143
-
144
- def request method, *args
145
- @request_id += 1
146
- put Message::Request[ @request_id, method, args]
147
- @responses[ @request_id] = nil
148
- run @request_id
149
- r = @responses.delete @request_id
150
- if r.error then
151
- t, e = *r.error
152
- t = @conn.error t
153
- raise ResponseError, "#{t}: #{e}"
154
- end
155
- r.value
156
- end
157
-
158
- def notify method, *args
159
- put Message::Notification[ method, args]
160
- end
161
-
162
- private
163
-
164
- def put msg
165
- log :debug1, "Sending Message", data: msg
166
- @conn.put msg.to_a
167
- self
168
- rescue Errno::EPIPE
169
- raise Disconnected
170
- end
171
-
172
- def get
173
- IO.select [@conn.input], nil, nil
174
- raise Disconnected if @conn.eof?
175
- msg = Message.from_array @conn.get
176
- log :debug1, "Received Message", data: msg
177
- msg
178
- rescue EOFError
179
- raise Disconnected
180
- end
181
-
182
- end
183
-
184
- end
185
-
@@ -1,60 +0,0 @@
1
- #
2
- # neovim/session.rb -- Sessions
3
- #
4
-
5
- require "neovim/foreign/supplement"
6
-
7
- require "neovim/logging"
8
- require "neovim/connection"
9
- require "neovim/messager"
10
-
11
-
12
- module Neovim
13
-
14
- class Session
15
-
16
- include Logging
17
-
18
- class <<self
19
-
20
- private :new
21
-
22
- def open conntype, *args, **kwargs
23
- conntype.open_files *args, **kwargs do |conn|
24
- yield (new conn)
25
- end
26
- end
27
-
28
- include Logging
29
-
30
- def start *args
31
- open_logfile do
32
- log :info, "Starting", args: $*
33
- open *args do |i|
34
- yield i
35
- end
36
- ensure
37
- log :info, "Leaving"
38
- end
39
- end
40
-
41
- end
42
-
43
- def initialize conn
44
- @conn = conn
45
- @comm = Messager.new @conn, self
46
- end
47
-
48
- def execute_handler name, args
49
- raise "No handler found for #{name.inspect}."
50
- end
51
-
52
-
53
- def run ; @comm.run ; end
54
- def request method, *args ; @comm.request method, *args ; end
55
- def notify method, *args ; @comm.notify method, *args ; end
56
-
57
- end
58
-
59
- end
60
-