nvim 1.5.1 → 1.6.1

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
  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