nrepl-lazuli 0.2.5 → 0.2.6
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/lib/nrepl-lazuli/connection.rb +8 -6
- data/lib/nrepl-lazuli/fake_stdout.rb +2 -1
- data/lib/nrepl-lazuli/server.rb +11 -5
- data/lib/nrepl-lazuli.rb +7 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb08e5429998d1320a2f3b4db07b336c389af0e3a1f008c67dbb4236af27af4a
|
4
|
+
data.tar.gz: 9eb7a44c8d716860eeb09f18025dd5dd47713554384e9be249683b1ec7b11bf9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3aec4c5b770994bb11be7f6fdfcbbaa4c0a1050e4964c0a10cd0cf4b95c6014ce0dd40cc765cad1815b93f429bb0c2a3a66a70aa03f730392d03bad0c71e29c
|
7
|
+
data.tar.gz: 33d341eddae865f76f8463353b2232aaec4edd480f12301856bf618223f8f23fe7b237397e5d39135e3d745e9c57cbf22c6e658b61f9fa68c9756ccc81c65c35
|
@@ -4,8 +4,9 @@ module NREPL
|
|
4
4
|
|
5
5
|
def initialize(
|
6
6
|
input, debug: false, out: input,
|
7
|
-
watches: NREPL.class_variable_get(:@@
|
8
|
-
|
7
|
+
watches: NREPL.class_variable_get(:@@bindings),
|
8
|
+
binding: nil,
|
9
|
+
bindings: {}
|
9
10
|
)
|
10
11
|
@debug = debug
|
11
12
|
@in = input
|
@@ -14,7 +15,7 @@ module NREPL
|
|
14
15
|
@watches = watches
|
15
16
|
@counter = 0
|
16
17
|
@binding = binding
|
17
|
-
@
|
18
|
+
@bindings = bindings
|
18
19
|
end
|
19
20
|
|
20
21
|
def treat_messages!
|
@@ -84,7 +85,7 @@ module NREPL
|
|
84
85
|
when 'watches_for_file'
|
85
86
|
msg['id'] ||= "eval_#{@counter += 1}"
|
86
87
|
file = msg['file']
|
87
|
-
rows_bindings = @
|
88
|
+
rows_bindings = @bindings[file] || {}
|
88
89
|
send_msg(response_for(msg, {
|
89
90
|
'status' => ['done'],
|
90
91
|
'rows' => rows_bindings.keys.sort,
|
@@ -109,6 +110,7 @@ module NREPL
|
|
109
110
|
begin
|
110
111
|
eval_msg(msg, stop)
|
111
112
|
rescue Exception => e
|
113
|
+
puts e.backtrace
|
112
114
|
send_exception(msg, e)
|
113
115
|
ensure
|
114
116
|
@pending_evals.delete(id) unless stop
|
@@ -165,10 +167,10 @@ module NREPL
|
|
165
167
|
row = msg['line']
|
166
168
|
return if !file || !row
|
167
169
|
|
168
|
-
rows_bindings = @
|
170
|
+
rows_bindings = @bindings[file]
|
169
171
|
return unless rows_bindings
|
170
172
|
found_row = row.downto(-1).find { |k| rows_bindings[k] }
|
171
|
-
rows_bindings[found_row]
|
173
|
+
rows_bindings[found_row][:binding] if found_row
|
172
174
|
end
|
173
175
|
|
174
176
|
private def define_stop_function!(msg, method_name)
|
data/lib/nrepl-lazuli/server.rb
CHANGED
@@ -28,8 +28,9 @@ module NREPL
|
|
28
28
|
@debug = debug
|
29
29
|
@connections = Set.new
|
30
30
|
@binding = binding
|
31
|
-
@
|
31
|
+
@bindings = {}
|
32
32
|
NREPL.class_variable_set(:@@connections, @connections)
|
33
|
+
NREPL.class_variable_set(:@@bindings, @bindings)
|
33
34
|
end
|
34
35
|
|
35
36
|
private def record_port
|
@@ -53,7 +54,7 @@ module NREPL
|
|
53
54
|
s = TCPServer.new(host, port)
|
54
55
|
loop do
|
55
56
|
Thread.start(s.accept) do |client|
|
56
|
-
connection = Connection.new(client, debug: debug?, binding: @binding,
|
57
|
+
connection = Connection.new(client, debug: debug?, binding: @binding, bindings: @bindings)
|
57
58
|
@connections << connection
|
58
59
|
connection.treat_messages!
|
59
60
|
@connections.delete(connection)
|
@@ -66,10 +67,9 @@ module NREPL
|
|
66
67
|
def auto_create_bindings!
|
67
68
|
dir_regex = Regexp.new("^#{Regexp.escape(@pwd)}")
|
68
69
|
@call_trace = TracePoint.new(:call) do |tp|
|
69
|
-
@
|
70
|
-
@
|
70
|
+
@bindings[tp.path] ||= {}
|
71
|
+
@bindings[tp.path][tp.lineno-1] = {binding: tp.binding, id: "#{tp.path}:#{tp.lineno}"}
|
71
72
|
if tp.path =~ dir_regex
|
72
|
-
# puts "Tracing #{tp.path}:#{tp.lineno}"
|
73
73
|
@connections.each do |connection|
|
74
74
|
connection.send_msg(
|
75
75
|
'op' => 'hit_auto_watch',
|
@@ -81,6 +81,12 @@ module NREPL
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
@call_trace.enable
|
84
|
+
|
85
|
+
# @ex_trace = TracePoint.new(:raise) do |tp|
|
86
|
+
# $foo = [tp.lineno, tp.event, tp.raised_exception, tp.binding, caller_locations]
|
87
|
+
# # p $foo
|
88
|
+
# end
|
89
|
+
# @ex_trace.enable
|
84
90
|
end
|
85
91
|
|
86
92
|
def stop
|
data/lib/nrepl-lazuli.rb
CHANGED
@@ -7,15 +7,18 @@ module NREPL
|
|
7
7
|
PORT_FILENAME = '.nrepl-port'
|
8
8
|
|
9
9
|
require_relative 'nrepl-lazuli/server'
|
10
|
-
@@
|
10
|
+
@@bindings = {}
|
11
11
|
@@connections = Set.new
|
12
12
|
|
13
13
|
def self.watch!(binding, id=nil)
|
14
|
-
|
14
|
+
loc = caller_locations[0]
|
15
|
+
file = loc.absolute_path
|
16
|
+
row = loc.lineno
|
15
17
|
id ||= "#{file}:#{row}"
|
16
|
-
row = row.to_i
|
17
18
|
|
18
|
-
@@
|
19
|
+
@@bindings[file] ||= {}
|
20
|
+
@@bindings[file][loc.lineno-1] = {id: id, binding: binding}
|
21
|
+
|
19
22
|
@@connections.each do |connection|
|
20
23
|
connection.send_msg(
|
21
24
|
'op' => 'hit_watch',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nrepl-lazuli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maurício Szabo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bencode
|