nvim 1.5.1 → 1.6.1

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: b2f33b262cf70f6226c1af40d6b6173c56f5d808e7e4ba6629caa342f3131944
4
- data.tar.gz: b78833e0442c2ba8e6a74786576bb4dcfecf5ecebf005bd45dd1c9b4a49732f5
3
+ metadata.gz: d91e5ad07b2fd0ea6dd1da251df0e55dad1312b3ac4fa585cae59658dbccf666
4
+ data.tar.gz: bde8ff51d7a22f70aca3c58f83051b32357f0d56603bdbd7ce209ce6acf94de9
5
5
  SHA512:
6
- metadata.gz: 49a0ba665e6d93a4f629b1b0375c29237d90cbb2510bb99d4ff3e4533f7e5cab68c76ee841cc7b25a5117411f5fb5e2ab24d3763f9cf4fa9617b9bef4d693cab
7
- data.tar.gz: 1dafb13f71a994566f383577de178766fa6e0dc05a36075dc2af53c77cf3c5a0c8b21ac8dc08835fcbe89824441b857a193cfa8a503537f8ad642775276b8f6b
6
+ metadata.gz: c5d55983ed98e326fe1a5a6c15e764ac0a3aff858dadf3538c6edcee5339d7fb117b33984d80334d2fb18d7f8fbd505d89ca854aec09bbbf6513c07b5f9c48ee
7
+ data.tar.gz: c7dc22c69ddcb550b1d1a412963788b33f77337f5520ea87bc4bf2edabed162bcd59402e605eac6a46109c1953994024f88211c2d21af12efb9722e3eab36422
data/INFO.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
 
5
5
  nvim:
6
- version: 1.5.1
6
+ version: 1.6.1
7
7
  license: BSD-2-Clause+
8
8
  authors:
9
9
  - Bertram Scharpf
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  # BSD-2-clause license, extended by language use conditions
2
2
 
3
- Copyright (C) 2024, Bertram Scharpf <software@bertram-scharpf.de>.
3
+ Copyright (C) 2024-2025, Bertram Scharpf <software@bertram-scharpf.de>.
4
4
  All rights reserved.
5
5
 
6
6
  Redistribution and use in source and binary forms, with or without
data/README.md CHANGED
@@ -207,6 +207,52 @@ Yet, you should avoid to use `fork` and `exec`, except when
207
207
  you're absolutely sure what you're doing.
208
208
 
209
209
 
210
+ #### Global variables
211
+
212
+ The global variable `$vim` will be set to the client.
213
+
214
+ ```
215
+ ~
216
+ ~
217
+ :ruby $vim.command "split"
218
+ ```
219
+
220
+ Further, the variables `$range` and `$lines` will be set.
221
+
222
+ ```
223
+ 1 foo
224
+ 2 bar
225
+ 3 baz
226
+ ~
227
+ :%ruby puts $range.inspect, $lines.inspect
228
+ ```
229
+
230
+ The legacy variables `$curbuf` and `$curwin` are supported.
231
+
232
+ ```
233
+ ~
234
+ ~
235
+ :ruby puts $curbuf.get_name, $curwin.get_height
236
+ ```
237
+
238
+
239
+ ### Requiring Ruby files
240
+
241
+ In addition to the `:rubyfile` command as documented, that command can also be
242
+ used to just require a Ruby file. Set the name into angle brackets, and the
243
+ file will be searched in `$:`. Sorry, file name completion will not work.
244
+
245
+ ```
246
+ ~
247
+ ~
248
+ :rubyfile <yaml>
249
+ ```
250
+
251
+ In this case, the global variables `$range` and `$lines` will not be set. Yet,
252
+ `$vim` still will be available. See the
253
+ [Nxxd](https://github.com/BertramScharpf/ruby-nxxd) gem for a nice example.
254
+
255
+
210
256
  ### List all API functions
211
257
 
212
258
  To show a list of the API functions call something like this:
@@ -365,7 +411,7 @@ main:1:004> \q!!
365
411
  Put text into an X selection or a TMux register.
366
412
 
367
413
  ```vim
368
- let g:ruby_require = "neovim/tools/copy"
414
+ rubyfile <neovim/tools/copy>
369
415
  '<,'>ruby xsel $lines
370
416
  '<,'>ruby xsel! $lines
371
417
  '<,'>ruby tmuxbuf $lines
@@ -375,16 +421,16 @@ Make a hex dump.
375
421
 
376
422
  ```vim
377
423
  ruby <<EOT
378
- require "neovim/foreign/xxd"
424
+ require "neovim/foreign/nxxd"
379
425
  bn = $curbuf.get_name
380
- $vim.command :new
381
- File.open bn do |b| Xxd::Dump.new.run b do |l| $vim.put [l], "l", false, true end end
426
+ $vim.command :enew!
427
+ File.open bn do |b| Nxxd::Dump.new.run b do |l| $vim.put [l], "l", false, true end end
382
428
  EOT
383
429
  ```
384
430
 
385
431
 
386
432
  ## Copyright
387
433
 
388
- * (C) 2024 Bertram Scharpf <software@bertram-scharpf.de>
434
+ * (C) 2024,2025 Bertram Scharpf <software@bertram-scharpf.de>
389
435
  * License: [BSD-2-Clause+](./LICENSE)
390
436
 
data/Rakefile CHANGED
@@ -51,7 +51,7 @@ end
51
51
 
52
52
 
53
53
  task :diffdeps do
54
- %w(mplight).each { |gem|
54
+ %w(mplight nxxd).each { |gem|
55
55
  c = `gem contents #{gem}`
56
56
  unless $?.success? then
57
57
  puts "Gem #{gem} not installed. Cannot compare."
data/lib/neovim/client.rb CHANGED
@@ -16,9 +16,6 @@ module Neovim
16
16
  attr_accessor :strict
17
17
  end
18
18
 
19
- class UnknownApiFunction < RuntimeError ; end
20
- class UnknownApiObjectFunction < RuntimeError ; end
21
-
22
19
 
23
20
  attr_reader :channel_id
24
21
 
@@ -1,19 +1,20 @@
1
1
  #
2
- # neovim/foreign/xxd.rb -- Xxd reimplementation
2
+ # neovim/foreign/nxxd.rb -- Hex Dump Tool
3
3
  #
4
4
 
5
5
  # The purpose of this is simply to reduce dependencies.
6
6
 
7
7
  begin
8
- require "xxd"
8
+ require "nxxd"
9
9
  rescue LoadError
10
10
 
11
11
  # ----------------------------------------------------------------
12
12
  #
13
- # xxd.rb -- A Reimplementation of Xxd in plain Ruby
13
+ # nxxd.rb -- Hex Dump Tool
14
14
  #
15
15
 
16
- module Xxd
16
+
17
+ module Nxxd
17
18
 
18
19
  module ReadChunks
19
20
 
@@ -87,53 +88,44 @@ module Xxd
87
88
  addr += b.size
88
89
  end
89
90
  yield @addr_fmt % addr
91
+ nil
90
92
  end
91
93
 
94
+
92
95
  class <<self
93
96
 
94
- def reverse input
95
- r = nil
96
- pos = 0
97
- repeat = false
97
+ def reverse input, output = nil
98
+ output ||= ""
99
+ o = String === output ? (WriteChunksString.new output) : output
100
+ o.set_encoding Encoding::ASCII_8BIT
101
+ r, repeat = nil, false
98
102
  input.each_line { |l|
103
+ l.chomp!
99
104
  case l
100
- when /^\s*#/ then
101
- when /^\*/ then repeat = true
102
- else
103
- if (l.slice! /^(\h+):\s*/) then
105
+ when /^\s*(?:#|$)/ then nil
106
+ when /^\*/ then repeat = true
107
+ when /^(?:(\h+):)?\s*((?:\h\h ?)*)/ then
108
+ addr, nibs = $~.captures
109
+ if addr then
104
110
  addr = $1.to_i 0x10
105
111
  if repeat then
106
- while pos + r.length < addr do
107
- yield r
108
- pos += r.length
109
- end
110
- if pos < addr then
111
- yield r[ 0, addr - pos]
112
- pos = addr
112
+ loop do
113
+ s = addr - o.tell
114
+ break if s <= 0
115
+ o.write s >= r.length ? r : r[ 0, s]
113
116
  end
114
117
  repeat = false
115
118
  else
116
- if pos < addr then
117
- r = ([0].pack "C*") * (addr - pos)
118
- yield r
119
- pos = addr
120
- elsif pos > addr then
121
- yield nil, addr
122
- pos = addr
123
- end
124
119
  end
120
+ o.seek addr
125
121
  end
126
- row = []
127
- while (nib = l.slice! /^\h\h ?/) do
128
- row.push nib.to_i 0x10
129
- end
130
- if row.any? then
131
- r = row.pack "C*"
132
- yield r
133
- pos += r.length
134
- end
122
+ r = (nibs.scan /\h\h/).map { |x| x.to_i 0x10 }.pack "C*"
123
+ o.write r
124
+ else
125
+ raise "Uninterpretable hex dump: #{l.chomp}"
135
126
  end
136
127
  }
128
+ output
137
129
  end
138
130
 
139
131
  end
@@ -161,12 +153,13 @@ module Xxd
161
153
  def run input, &block
162
154
  if @varname then
163
155
  yield "unsigned char #@varname[] = {"
164
- yield "};"
165
156
  len = run_plain input, &block
157
+ yield "};"
166
158
  yield "unsigned int #@varname\_len = %d;" % len
167
159
  else
168
160
  run_plain input, &block
169
161
  end
162
+ nil
170
163
  end
171
164
 
172
165
  private
@@ -187,6 +180,34 @@ module Xxd
187
180
 
188
181
  end
189
182
 
183
+ class WriteChunksString
184
+ def initialize str
185
+ @str = str
186
+ end
187
+ def set_encoding enc
188
+ @str.force_encoding enc
189
+ end
190
+ def tell ; @pos || @str.length ; end
191
+ def seek pos
192
+ s = pos - @str.length
193
+ if s >= 0 then
194
+ s.times { @str << "\0".b }
195
+ else
196
+ @pos = pos
197
+ end
198
+ end
199
+ def write b
200
+ if @pos then
201
+ l = b.length
202
+ @str[ @pos, l] = b
203
+ @pos += l
204
+ @pos = nil if @pos >= @str.length
205
+ else
206
+ @str << b
207
+ end
208
+ end
209
+ end
210
+
190
211
  end
191
212
 
192
213
  # ----------------------------------------------------------------
data/lib/neovim/info.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  require "neovim/meta.rb"
2
2
  Neovim::INFO = Neovim::Meta.new "nvim",
3
- version: "1.5.1",
3
+ version: "1.6.1",
4
4
  license: "BSD-2-Clause+",
5
5
  authors: ["Bertram Scharpf"],
6
6
  email: "software@bertram-scharpf.de",
7
7
  summary: "Yet another Ruby client for Neovim",
8
8
  description: "A simple Ruby client for Neovim.\nClean code, minimal dependecies, no frills, no wokeness.",
9
9
  homepage: "https://github.com/BertramScharpf/ruby-nvim",
10
- commit: "3508371"
10
+ commit: "4e96338"
@@ -38,6 +38,9 @@ module Neovim
38
38
  end
39
39
 
40
40
 
41
+ class UnknownApiFunction < RuntimeError ; end
42
+ class UnknownApiObjectFunction < RuntimeError ; end
43
+
41
44
 
42
45
  class RemoteObject
43
46
 
@@ -203,11 +203,17 @@ module Neovim
203
203
 
204
204
  # This is called by the +:rubyfile+ command.
205
205
  dsl.rpc :ruby_execute_file do |client,path,fst,lst|
206
- set_globals client, fst..lst do ||
207
- r = File.read path
208
- script_binding.eval r, "ruby_file #{path}"
206
+ if path =~ /<(.*)>\z/ then
207
+ set_global_client client do
208
+ require $1
209
+ end
210
+ else
211
+ set_globals client, fst..lst do ||
212
+ r = File.read path
213
+ script_binding.eval r, "ruby_file #{path}"
214
+ end
215
+ nil
209
216
  end
210
- nil
211
217
  end
212
218
 
213
219
  # This is called by the +:rubydo+ command.
data/nvim.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  if false then
26
26
  spec.add_dependency "supplement", "~> 2.18"
27
27
  spec.add_dependency "mplight", "~> 1.0"
28
+ spec.add_dependency "nxxd", "~> 1.0"
28
29
  end
29
30
 
30
31
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nvim
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-01-14 00:00:00.000000000 Z
10
+ date: 2025-02-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  email: software@bertram-scharpf.de
13
13
  executables:
@@ -46,9 +46,9 @@ files:
46
46
  - lib/neovim/connection.rb
47
47
  - lib/neovim/foreign/mplight.rb
48
48
  - lib/neovim/foreign/mplight/bufferio.rb
49
+ - lib/neovim/foreign/nxxd.rb
49
50
  - lib/neovim/foreign/supplement.rb
50
51
  - lib/neovim/foreign/supplement/socket.rb
51
- - lib/neovim/foreign/xxd.rb
52
52
  - lib/neovim/handler.rb
53
53
  - lib/neovim/host.rb
54
54
  - lib/neovim/info.rb