nvim 1.5.0 → 1.5.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 +4 -4
- data/INFO.yaml +1 -1
- data/examples/passwords +78 -0
- data/lib/neovim/client.rb +1 -0
- data/lib/neovim/host.rb +8 -2
- data/lib/neovim/info.rb +2 -2
- data/lib/neovim/logging.rb +2 -2
- data/lib/neovim/remote.rb +5 -5
- data/lib/neovim.rb +1 -1
- metadata +5 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2f33b262cf70f6226c1af40d6b6173c56f5d808e7e4ba6629caa342f3131944
|
4
|
+
data.tar.gz: b78833e0442c2ba8e6a74786576bb4dcfecf5ecebf005bd45dd1c9b4a49732f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49a0ba665e6d93a4f629b1b0375c29237d90cbb2510bb99d4ff3e4533f7e5cab68c76ee841cc7b25a5117411f5fb5e2ab24d3763f9cf4fa9617b9bef4d693cab
|
7
|
+
data.tar.gz: 1dafb13f71a994566f383577de178766fa6e0dc05a36075dc2af53c77cf3c5a0c8b21ac8dc08835fcbe89824441b857a193cfa8a503537f8ad642775276b8f6b
|
data/INFO.yaml
CHANGED
data/examples/passwords
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#
|
4
|
+
# examples/passwords -- Manage a file containing your passwords
|
5
|
+
#
|
6
|
+
|
7
|
+
# (C) 2025 Bertram Scharpf <software@bertram-scharpf.de>
|
8
|
+
|
9
|
+
require "neovim/host"
|
10
|
+
|
11
|
+
|
12
|
+
class Passwords
|
13
|
+
|
14
|
+
PW_FILE = File.expand_path "~/.config/mypasswords.asc"
|
15
|
+
RECIPIENT = "jdoe@example.com"
|
16
|
+
|
17
|
+
def initialize debug: false
|
18
|
+
@debug = debug
|
19
|
+
end
|
20
|
+
|
21
|
+
def run
|
22
|
+
contents = get_contents.split $/
|
23
|
+
Neovim::Remote.run_sub do |pw_dsl|
|
24
|
+
pw_dsl.setup do |client|
|
25
|
+
client.set_option shadafile: "NONE"
|
26
|
+
client.set_option filetype: "dosini"
|
27
|
+
client.put contents, "l", true, false
|
28
|
+
client.command "1"
|
29
|
+
client.get_current_line.empty? and client.del_current_line
|
30
|
+
{
|
31
|
+
"Save" => "rb_save",
|
32
|
+
"Totp" => "rb_totp",
|
33
|
+
}.each { |cmd,fn|
|
34
|
+
client.command "command -buffer -nargs=0 %s call rpcrequest(%d,'%s')" % [ cmd, client.channel_id, fn]
|
35
|
+
}
|
36
|
+
end
|
37
|
+
pw_dsl.register_handler "rb_save" do |client|
|
38
|
+
File.rename PW_FILE, "#{PW_FILE}.bak" rescue nil
|
39
|
+
IO.popen %W(gpg -a -r #{RECIPIENT} --encrypt -o #{PW_FILE}), "w" do |gpg|
|
40
|
+
gpg.puts client.get_current_buf[1..]
|
41
|
+
end
|
42
|
+
File.chmod 0600, PW_FILE
|
43
|
+
end
|
44
|
+
pw_dsl.register_handler "rb_totp" do |client|
|
45
|
+
require "potp"
|
46
|
+
require "neovim/tools/copy"
|
47
|
+
p = client.call_function "expand", [ "<cword>"]
|
48
|
+
key = (POTP::TOTP.new p).now if p.notempty? and p.length % 4 == 0
|
49
|
+
client.echo [ [ key]], true, {}
|
50
|
+
xsel key
|
51
|
+
rescue
|
52
|
+
client.err_writeln "No OTP under cursor?"
|
53
|
+
rescue ScriptError
|
54
|
+
client.err_writeln $!.message
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def get_contents
|
60
|
+
r = IO.popen %W(gpg -d #{PW_FILE}), "r" do |gpg| gpg.read end
|
61
|
+
r.notempty? or <<~EOT
|
62
|
+
# Move the cursor to the OTP keyword and give the command `:Totp`.
|
63
|
+
# The TOTP key will be displayed and further copied to the clipboard.
|
64
|
+
|
65
|
+
[account "dummy"]
|
66
|
+
name = John Doe
|
67
|
+
password = very$ecret
|
68
|
+
optauth = GYS5L3N3E4AAYNMN562LW76TMWHQBJ4A
|
69
|
+
|
70
|
+
# As soon as you have set the `RECIPIENT` constant in the executable,
|
71
|
+
# you may save this file calling the command `:Save`.
|
72
|
+
EOT
|
73
|
+
end
|
74
|
+
|
75
|
+
new.run
|
76
|
+
|
77
|
+
end
|
78
|
+
|
data/lib/neovim/client.rb
CHANGED
data/lib/neovim/host.rb
CHANGED
@@ -47,6 +47,7 @@ module Neovim
|
|
47
47
|
def run plugins
|
48
48
|
$stdin.tty? and raise "This program expects to be called by Neovim. It can't run interactively."
|
49
49
|
start plugins do |h|
|
50
|
+
log :info, "Starting event loop."
|
50
51
|
h.run
|
51
52
|
nil
|
52
53
|
rescue Remote::Disconnected
|
@@ -54,8 +55,13 @@ module Neovim
|
|
54
55
|
nil
|
55
56
|
rescue SignalException
|
56
57
|
n = $!.signm.notempty? || $!.class.to_s
|
57
|
-
|
58
|
-
|
58
|
+
if n =~ /\A(?:SIG)?TERM\z/ then
|
59
|
+
log :info, "Exiting after terminate signal."
|
60
|
+
nil
|
61
|
+
else
|
62
|
+
log :fatal, "Signal was caught: #{n}"
|
63
|
+
1
|
64
|
+
end
|
59
65
|
rescue Exception
|
60
66
|
log_exception :fatal
|
61
67
|
2
|
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.
|
3
|
+
version: "1.5.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: "
|
10
|
+
commit: "3508371"
|
data/lib/neovim/logging.rb
CHANGED
@@ -234,8 +234,8 @@ module Neovim
|
|
234
234
|
**kwargs
|
235
235
|
end
|
236
236
|
|
237
|
-
def log_exception level
|
238
|
-
Logging.put level, "Exception: #$!",
|
237
|
+
def log_exception level = nil
|
238
|
+
Logging.put level||:error, "Exception: #$!",
|
239
239
|
sender: self, caller: (caller 1, 1).first,
|
240
240
|
exception: $!.class
|
241
241
|
$@.each { |b|
|
data/lib/neovim/remote.rb
CHANGED
@@ -122,13 +122,13 @@ module Neovim
|
|
122
122
|
|
123
123
|
def start plugins, *args, **kwargs
|
124
124
|
open_logfile do
|
125
|
-
log :
|
125
|
+
log :debug1, "Starting", args: $*
|
126
126
|
open_conn *args, **kwargs do |conn|
|
127
127
|
i = new plugins, conn
|
128
128
|
yield i
|
129
129
|
end
|
130
130
|
ensure
|
131
|
-
log :
|
131
|
+
log :debug1, "Leaving"
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
@@ -154,7 +154,7 @@ module Neovim
|
|
154
154
|
l.map! { |p| p.type }
|
155
155
|
l.uniq!
|
156
156
|
name = l.join "-"
|
157
|
-
log :
|
157
|
+
log :debug1, "Client Name", name: name
|
158
158
|
"ruby-#{name}-host"
|
159
159
|
else
|
160
160
|
"ruby-client"
|
@@ -210,7 +210,7 @@ module Neovim
|
|
210
210
|
if @conn.client or not h.needs_client? then
|
211
211
|
p.call
|
212
212
|
else
|
213
|
-
log :
|
213
|
+
log :debug1, "Deferred handler for", name: message.method_name
|
214
214
|
@deferred ||= []
|
215
215
|
@deferred.push p
|
216
216
|
end
|
@@ -266,7 +266,7 @@ module Neovim
|
|
266
266
|
@plugins.each_value do |plugin|
|
267
267
|
h = plugin.get_handler name
|
268
268
|
if h then
|
269
|
-
log :
|
269
|
+
log :debug1, "Found handler", name: name
|
270
270
|
return h
|
271
271
|
end
|
272
272
|
end
|
data/lib/neovim.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nvim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bertram Scharpf
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-01-14 00:00:00.000000000 Z
|
12
11
|
dependencies: []
|
13
|
-
description:
|
14
12
|
email: software@bertram-scharpf.de
|
15
13
|
executables:
|
16
14
|
- neovim-ruby-host
|
@@ -28,6 +26,7 @@ extra_rdoc_files:
|
|
28
26
|
- examples/demo_remote_inside_block.rb
|
29
27
|
- examples/demo_sub
|
30
28
|
- examples/dump_api
|
29
|
+
- examples/passwords
|
31
30
|
files:
|
32
31
|
- INFO.yaml
|
33
32
|
- LICENSE
|
@@ -41,6 +40,7 @@ files:
|
|
41
40
|
- examples/demo_remote_inside_block.rb
|
42
41
|
- examples/demo_sub
|
43
42
|
- examples/dump_api
|
43
|
+
- examples/passwords
|
44
44
|
- lib/neovim.rb
|
45
45
|
- lib/neovim/client.rb
|
46
46
|
- lib/neovim/connection.rb
|
@@ -66,7 +66,6 @@ homepage: https://github.com/BertramScharpf/ruby-nvim
|
|
66
66
|
licenses:
|
67
67
|
- BSD-2-Clause+
|
68
68
|
metadata: {}
|
69
|
-
post_install_message:
|
70
69
|
rdoc_options: []
|
71
70
|
require_paths:
|
72
71
|
- lib
|
@@ -81,8 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
80
|
- !ruby/object:Gem::Version
|
82
81
|
version: '0'
|
83
82
|
requirements: []
|
84
|
-
rubygems_version: 3.
|
85
|
-
signing_key:
|
83
|
+
rubygems_version: 3.6.2
|
86
84
|
specification_version: 4
|
87
85
|
summary: Yet another Ruby client for Neovim
|
88
86
|
test_files: []
|