nvim 1.13.4 → 1.14

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86b2b03d1aaf9ccb0a8f8c9cfcc356da5c0166bffc973ac2aaea7faf7a360b83
4
- data.tar.gz: 4af7414f996231c2070b00b157eeb3e097aa852da302f9bb512412d394919975
3
+ metadata.gz: dedacdadce72f297ba984b9e6ad211d23e3a990a5b6a456a88ebda1c2c84e4fa
4
+ data.tar.gz: 8b4608fb8ba6d587e69422d37f5b172179a901cb5015bfbd7320c21b1c9f2045
5
5
  SHA512:
6
- metadata.gz: ee684cf65ee6c9e80b38e9a58023c3832fdd1824fe29d919da54c63e723527aae2a234e3204452fb8ee3fa883db6a1a3cf577e88f7d51ffc9acdc894f184d841
7
- data.tar.gz: 261486d13c57469eae397f4af2cce20e680356e03511257f8ab7cc95e3d914b7cdb3a46084ce0aabe80abe4d6e6e86557901ec18c8ca18d172d75a3b0c62b904
6
+ metadata.gz: 50d5f48e393e1465668efe51e21910841edcd91b94fa2c106f7ea6d665bd598ba85d4753eeb19a574ebda966e75004570f237f5f709f5f8aa3e9efc681a01c22
7
+ data.tar.gz: a24faf04fd4a18ce729cf3fc6b397d729f3ea5022fafeff49169bc38105549fc149a84deb63683cb21e9ce6bfb90608a3ca288774f0a168f0d9326f81841e8c3
data/INFO.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
 
5
5
  nvim:
6
- version: "1.13.4"
6
+ version: "1.14"
7
7
  license: LicenseRef-BSD-2-Clause-and-DECENT_LANGUAGE
8
8
  authors:
9
9
  - Bertram Scharpf
data/lib/neovim/client.rb CHANGED
@@ -129,11 +129,11 @@ module Neovim
129
129
  when Buffer then @client, @buffer = client.client, client.index
130
130
  else @client, @buffer = client, 0
131
131
  end
132
- @i, @last = range.begin, range.end
132
+ @first, @last = range.begin, range.end
133
133
  end
134
134
 
135
135
  def to_s
136
- (@client.buf_get_lines @buffer, @i-1, @last, true).join $/
136
+ (@client.buf_get_lines @buffer, @first-1, @last, true).join $/
137
137
  end
138
138
 
139
139
  def method_missing sym, *args, **kwargs, &block
@@ -141,46 +141,64 @@ module Neovim
141
141
  end
142
142
 
143
143
  def each
144
- while @i <= @last do
145
- @inc = 1
146
- l, = @client.buf_get_lines @buffer, @i-1, @i, true
147
- yield l
148
- @i += @inc
144
+ if block_given? then
145
+ begin
146
+ @i = @first
147
+ while @i <= @last do
148
+ l, = @client.buf_get_lines @buffer, @i-1, @i, true
149
+ yield l, @i
150
+ @i += 1
151
+ end
152
+ ensure
153
+ @i = nil
154
+ end
155
+ else
156
+ Enumerator.new { |y| each { |l,i| y.yield l, i } }
149
157
  end
150
- ensure
151
- @i = nil
152
158
  end
153
159
  alias each_line each
154
160
 
155
- def each_with_no
156
- each do |l|
157
- yield l, @i
161
+ def map!
162
+ if block_given? then
163
+ each do |l|
164
+ m = yield l, @i
165
+ if m != l then
166
+ r = Neovim.result_lines m
167
+ @client.buf_set_lines @buffer, @i-1, @i, true, r
168
+ inc = r.length - 1
169
+ @i += inc
170
+ @last += inc
171
+ end
172
+ end
173
+ else
174
+ Enumerator.new { |y| map! { |l,i| y.yield l, i } }
158
175
  end
159
176
  end
177
+ alias collect! map!
160
178
 
161
- def map!
162
- each do |l|
163
- h = l.hash
164
- m = yield l, @i
165
- if not String === m or m.hash != h then
166
- r = result_strings m
167
- r.flatten!
168
- @client.buf_set_lines @buffer, @i-1, @i, true, r
169
- @inc = r.length
170
- @last += @inc-1
179
+ def reject!
180
+ if block_given? then
181
+ each do |l|
182
+ if yield l, @i then
183
+ @client.buf_set_lines @buffer, @i-1, @i, true, []
184
+ @i -= 1
185
+ @last -= 1
186
+ end
171
187
  end
188
+ else
189
+ Enumerator.new { |y| reject! { |l,i| y.yield l, i } }
172
190
  end
173
191
  end
192
+ alias delete_if reject!
174
193
 
175
- private
176
-
177
- def result_strings obj
178
- case obj
179
- when Enumerable then obj.map { |l| result_strings l }
180
- when nil then []
181
- else obj.to_s.scan /^.*$/
194
+ def select!
195
+ if block_given? then
196
+ reject! { |l,i| not (yield l, i) }
197
+ else
198
+ Enumerator.new { |y| select! { |l,i| y.yield l, i } }
182
199
  end
183
200
  end
201
+ alias filter! select!
184
202
 
185
203
  end
186
204
 
data/lib/neovim/info.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require "neovim/meta.rb"
2
2
  Neovim::INFO = Neovim::Meta.new "nvim",
3
- version: "1.13.4",
3
+ version: "1.14",
4
4
  license: "LicenseRef-BSD-2-Clause-and-DECENT_LANGUAGE",
5
5
  authors: ["Bertram Scharpf"],
6
6
  email: "software@bertram-scharpf.de",
@@ -147,7 +147,7 @@ module Neovim
147
147
 
148
148
  def []= pos = nil, len = nil, str
149
149
  line_indices pos, len do |fst,lst|
150
- set_lines fst, lst, false, (str_lines str)
150
+ set_lines fst, lst, false, (Neovim.result_lines str)
151
151
  end
152
152
  self
153
153
  end
@@ -193,36 +193,60 @@ module Neovim
193
193
  include Enumerable
194
194
 
195
195
  def each pos = nil, len = nil, &block
196
- iter_chunks pos, len do |fst,nxt|
197
- (get_lines fst, nxt, true).each &block
196
+ if block_given? then
197
+ iter_chunks pos, len do |l|
198
+ l.each &block
199
+ end
200
+ else
201
+ Enumerator.new { |y| each { |x,i| y.yield x, i } }
198
202
  end
199
203
  end
200
204
 
201
205
  def map! pos = nil, len = nil, &block
202
- iter_chunks pos, len do |fst,nxt|
203
- l = (get_lines fst, nxt, true).map &block
204
- set_lines fst, nxt, true, l
206
+ if block_given? then
207
+ iter_chunks pos, len do |l|
208
+ n = l.length
209
+ m = l.map &block
210
+ if m != l then
211
+ r = Neovim.result_lines m
212
+ set_lines @fst, @fst+n, true, r
213
+ inc = r.length - n
214
+ @fst += inc
215
+ @lst += inc
216
+ end
217
+ end
218
+ else
219
+ Enumerator.new { |y| map! { |x,i| y.yield x, i } }
205
220
  end
206
221
  end
222
+ alias collect! map!
207
223
 
208
- def select! pos = nil, len = nil, &block
209
- line_indices_positive pos, len do |fst,lst|
210
- while fst < lst do
211
- l, = get_lines fst, fst+1, true
212
- if yield l then
213
- fst += 1
214
- else
215
- set_lines fst, fst+1, true, []
216
- lst -= 1
224
+ def reject! pos = nil, len = nil, &block
225
+ if block_given? then
226
+ iter_chunks pos, len do |l|
227
+ n = l.length
228
+ l.reject! &block
229
+ if l.length < n then
230
+ set_lines @fst, @fst+n, true, l
231
+ inc = l.length - n
232
+ @fst += inc
233
+ @lst += inc
217
234
  end
218
235
  end
236
+ else
237
+ Enumerator.new { |y| map! { |x,i| y.yield x, i } }
219
238
  end
220
239
  end
240
+ alias delete_if reject!
221
241
 
222
- def reject! pos = nil, len = nil, &block
223
- select! pos, len do |l| !yield l end
242
+ def select!
243
+ if block_given? then
244
+ reject! { |l| not (yield l) }
245
+ else
246
+ Enumerator.new { |y| select! { |l| y.yield l } }
247
+ end
224
248
  end
225
-
249
+ alias filter! select!
226
250
 
227
251
  # Don't run into `method_missing`.
228
252
  def get_lines fst, lst, strict ; call_obj :get_lines, fst, lst, strict ; end
@@ -262,32 +286,22 @@ module Neovim
262
286
  end
263
287
  end
264
288
 
265
- @chunk = 1024 # Attention! Each chunk is its own undo level.
289
+ @chunk_length = 1024
266
290
  class <<self
267
- attr_accessor :chunk
291
+ attr_accessor :chunk_length
268
292
  end
269
293
 
270
294
  def iter_chunks pos, len
271
295
  line_indices_positive pos, len do |fst,lst|
272
- while lst do
273
- nxt = fst + self.class.chunk
274
- if nxt > lst then
275
- nxt, lst = lst, nil
276
- end
277
- yield fst, nxt
278
- fst = nxt
296
+ @fst, @lst = fst, lst
297
+ while @fst < @lst do
298
+ l = get_lines @fst, @fst+self.class.chunk_length, false
299
+ yield l
300
+ @fst += self.class.chunk_length
279
301
  end
280
302
  end
281
- end
282
-
283
- def str_lines str
284
- if Array === str then
285
- str
286
- elsif str.nil? then
287
- []
288
- else
289
- str.lines.each { |l| l.chomp! }
290
- end
303
+ ensure
304
+ @fst = @lst = nil
291
305
  end
292
306
 
293
307
  end
@@ -330,5 +344,18 @@ module Neovim
330
344
 
331
345
  end
332
346
 
347
+
348
+ class <<self
349
+
350
+ def result_lines obj
351
+ case obj
352
+ when Enumerable then obj.inject [] do |s,l| s.push *(result_lines l) end
353
+ when nil then []
354
+ else obj.to_s.scan /^.*$/
355
+ end
356
+ end
357
+
358
+ end
359
+
333
360
  end
334
361
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nvim
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.4
4
+ version: '1.14'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf