ruby-lsp 0.23.11 → 0.23.17
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/README.md +2 -2
- data/VERSION +1 -1
- data/exe/ruby-lsp-launcher +20 -11
- data/lib/rubocop/cop/ruby_lsp/use_language_server_aliases.rb +1 -1
- data/lib/rubocop/cop/ruby_lsp/use_register_with_handler_method.rb +3 -5
- data/lib/ruby_indexer/lib/ruby_indexer/configuration.rb +82 -116
- data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +134 -183
- data/lib/ruby_indexer/lib/ruby_indexer/enhancement.rb +9 -10
- data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +97 -217
- data/lib/ruby_indexer/lib/ruby_indexer/index.rb +139 -281
- data/lib/ruby_indexer/lib/ruby_indexer/location.rb +4 -27
- data/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb +18 -19
- data/lib/ruby_indexer/lib/ruby_indexer/rbs_indexer.rb +23 -55
- data/lib/ruby_indexer/lib/ruby_indexer/reference_finder.rb +47 -61
- data/lib/ruby_indexer/lib/ruby_indexer/uri.rb +17 -19
- data/lib/ruby_indexer/lib/ruby_indexer/visibility_scope.rb +7 -11
- data/lib/ruby_indexer/test/class_variables_test.rb +14 -14
- data/lib/ruby_indexer/test/classes_and_modules_test.rb +65 -40
- data/lib/ruby_indexer/test/configuration_test.rb +48 -7
- data/lib/ruby_indexer/test/constant_test.rb +34 -34
- data/lib/ruby_indexer/test/enhancements_test.rb +1 -1
- data/lib/ruby_indexer/test/index_test.rb +146 -135
- data/lib/ruby_indexer/test/instance_variables_test.rb +37 -37
- data/lib/ruby_indexer/test/method_test.rb +149 -123
- data/lib/ruby_indexer/test/prefix_tree_test.rb +13 -13
- data/lib/ruby_indexer/test/rbs_indexer_test.rb +68 -73
- data/lib/ruby_indexer/test/test_case.rb +9 -3
- data/lib/ruby_indexer/test/uri_test.rb +15 -2
- data/lib/ruby_lsp/addon.rb +44 -71
- data/lib/ruby_lsp/base_server.rb +29 -32
- data/lib/ruby_lsp/client_capabilities.rb +10 -12
- data/lib/ruby_lsp/document.rb +40 -54
- data/lib/ruby_lsp/erb_document.rb +37 -41
- data/lib/ruby_lsp/global_state.rb +52 -57
- data/lib/ruby_lsp/internal.rb +2 -0
- data/lib/ruby_lsp/listeners/code_lens.rb +82 -89
- data/lib/ruby_lsp/listeners/completion.rb +67 -73
- data/lib/ruby_lsp/listeners/definition.rb +44 -58
- data/lib/ruby_lsp/listeners/document_highlight.rb +123 -150
- data/lib/ruby_lsp/listeners/document_link.rb +50 -70
- data/lib/ruby_lsp/listeners/document_symbol.rb +38 -52
- data/lib/ruby_lsp/listeners/folding_ranges.rb +40 -43
- data/lib/ruby_lsp/listeners/hover.rb +92 -110
- data/lib/ruby_lsp/listeners/inlay_hints.rb +4 -11
- data/lib/ruby_lsp/listeners/semantic_highlighting.rb +54 -56
- data/lib/ruby_lsp/listeners/signature_help.rb +12 -27
- data/lib/ruby_lsp/listeners/spec_style.rb +155 -0
- data/lib/ruby_lsp/listeners/test_discovery.rb +89 -0
- data/lib/ruby_lsp/listeners/test_style.rb +167 -90
- data/lib/ruby_lsp/node_context.rb +12 -39
- data/lib/ruby_lsp/rbs_document.rb +9 -7
- data/lib/ruby_lsp/requests/code_action_resolve.rb +63 -59
- data/lib/ruby_lsp/requests/code_actions.rb +14 -26
- data/lib/ruby_lsp/requests/code_lens.rb +20 -19
- data/lib/ruby_lsp/requests/completion.rb +7 -20
- data/lib/ruby_lsp/requests/completion_resolve.rb +6 -6
- data/lib/ruby_lsp/requests/definition.rb +7 -17
- data/lib/ruby_lsp/requests/diagnostics.rb +8 -11
- data/lib/ruby_lsp/requests/discover_tests.rb +18 -5
- data/lib/ruby_lsp/requests/document_highlight.rb +5 -15
- data/lib/ruby_lsp/requests/document_link.rb +6 -17
- data/lib/ruby_lsp/requests/document_symbol.rb +5 -8
- data/lib/ruby_lsp/requests/folding_ranges.rb +7 -15
- data/lib/ruby_lsp/requests/formatting.rb +6 -9
- data/lib/ruby_lsp/requests/go_to_relevant_file.rb +85 -0
- data/lib/ruby_lsp/requests/hover.rb +10 -20
- data/lib/ruby_lsp/requests/inlay_hints.rb +6 -17
- data/lib/ruby_lsp/requests/on_type_formatting.rb +32 -40
- data/lib/ruby_lsp/requests/prepare_rename.rb +4 -9
- data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +5 -15
- data/lib/ruby_lsp/requests/range_formatting.rb +5 -6
- data/lib/ruby_lsp/requests/references.rb +9 -53
- data/lib/ruby_lsp/requests/rename.rb +20 -46
- data/lib/ruby_lsp/requests/request.rb +8 -19
- data/lib/ruby_lsp/requests/selection_ranges.rb +6 -6
- data/lib/ruby_lsp/requests/semantic_highlighting.rb +16 -35
- data/lib/ruby_lsp/requests/show_syntax_tree.rb +7 -8
- data/lib/ruby_lsp/requests/signature_help.rb +8 -26
- data/lib/ruby_lsp/requests/support/annotation.rb +4 -10
- data/lib/ruby_lsp/requests/support/common.rb +15 -55
- data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +27 -35
- data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +11 -14
- data/lib/ruby_lsp/requests/support/rubocop_runner.rb +22 -34
- data/lib/ruby_lsp/requests/support/selection_range.rb +1 -3
- data/lib/ruby_lsp/requests/support/sorbet.rb +29 -38
- data/lib/ruby_lsp/requests/support/source_uri.rb +20 -32
- data/lib/ruby_lsp/requests/support/syntax_tree_formatter.rb +12 -19
- data/lib/ruby_lsp/requests/support/test_item.rb +16 -14
- data/lib/ruby_lsp/requests/type_hierarchy_supertypes.rb +5 -6
- data/lib/ruby_lsp/requests/workspace_symbol.rb +4 -4
- data/lib/ruby_lsp/response_builders/collection_response_builder.rb +5 -5
- data/lib/ruby_lsp/response_builders/document_symbol.rb +14 -19
- data/lib/ruby_lsp/response_builders/hover.rb +11 -14
- data/lib/ruby_lsp/response_builders/response_builder.rb +1 -1
- data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +60 -88
- data/lib/ruby_lsp/response_builders/signature_help.rb +5 -6
- data/lib/ruby_lsp/response_builders/test_collection.rb +43 -10
- data/lib/ruby_lsp/ruby_document.rb +24 -92
- data/lib/ruby_lsp/scope.rb +7 -11
- data/lib/ruby_lsp/scripts/compose_bundle.rb +6 -4
- data/lib/ruby_lsp/server.rb +182 -99
- data/lib/ruby_lsp/setup_bundler.rb +65 -60
- data/lib/ruby_lsp/static_docs.rb +11 -7
- data/lib/ruby_lsp/store.rb +29 -47
- data/lib/ruby_lsp/test_helper.rb +2 -12
- data/lib/ruby_lsp/test_reporters/lsp_reporter.rb +191 -0
- data/lib/ruby_lsp/test_reporters/minitest_reporter.rb +105 -0
- data/lib/ruby_lsp/test_reporters/test_unit_reporter.rb +94 -0
- data/lib/ruby_lsp/type_inferrer.rb +13 -14
- data/lib/ruby_lsp/utils.rb +92 -83
- metadata +9 -3
@@ -4,19 +4,12 @@
|
|
4
4
|
module RubyLsp
|
5
5
|
module Listeners
|
6
6
|
class FoldingRanges
|
7
|
-
extend T::Sig
|
8
7
|
include Requests::Support::Common
|
9
8
|
|
10
|
-
|
11
|
-
params(
|
12
|
-
response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::FoldingRange],
|
13
|
-
comments: T::Array[Prism::Comment],
|
14
|
-
dispatcher: Prism::Dispatcher,
|
15
|
-
).void
|
16
|
-
end
|
9
|
+
#: (ResponseBuilders::CollectionResponseBuilder[Interface::FoldingRange] response_builder, Array[Prism::Comment] comments, Prism::Dispatcher dispatcher) -> void
|
17
10
|
def initialize(response_builder, comments, dispatcher)
|
18
11
|
@response_builder = response_builder
|
19
|
-
@requires =
|
12
|
+
@requires = [] #: Array[Prism::CallNode]
|
20
13
|
@comments = comments
|
21
14
|
|
22
15
|
dispatcher.register(
|
@@ -47,33 +40,33 @@ module RubyLsp
|
|
47
40
|
)
|
48
41
|
end
|
49
42
|
|
50
|
-
|
43
|
+
#: -> void
|
51
44
|
def finalize_response!
|
52
45
|
push_comment_ranges
|
53
46
|
emit_requires_range
|
54
47
|
end
|
55
48
|
|
56
|
-
|
49
|
+
#: (Prism::IfNode node) -> void
|
57
50
|
def on_if_node_enter(node)
|
58
51
|
add_statements_range(node)
|
59
52
|
end
|
60
53
|
|
61
|
-
|
54
|
+
#: (Prism::InNode node) -> void
|
62
55
|
def on_in_node_enter(node)
|
63
56
|
add_statements_range(node)
|
64
57
|
end
|
65
58
|
|
66
|
-
|
59
|
+
#: (Prism::RescueNode node) -> void
|
67
60
|
def on_rescue_node_enter(node)
|
68
61
|
add_statements_range(node)
|
69
62
|
end
|
70
63
|
|
71
|
-
|
64
|
+
#: (Prism::WhenNode node) -> void
|
72
65
|
def on_when_node_enter(node)
|
73
66
|
add_statements_range(node)
|
74
67
|
end
|
75
68
|
|
76
|
-
|
69
|
+
#: (Prism::InterpolatedStringNode node) -> void
|
77
70
|
def on_interpolated_string_node_enter(node)
|
78
71
|
opening_loc = node.opening_loc || node.location
|
79
72
|
closing_loc = node.closing_loc || node.parts.last&.location || node.location
|
@@ -81,82 +74,82 @@ module RubyLsp
|
|
81
74
|
add_lines_range(opening_loc.start_line, closing_loc.start_line - 1)
|
82
75
|
end
|
83
76
|
|
84
|
-
|
77
|
+
#: (Prism::ArrayNode node) -> void
|
85
78
|
def on_array_node_enter(node)
|
86
79
|
add_simple_range(node)
|
87
80
|
end
|
88
81
|
|
89
|
-
|
82
|
+
#: (Prism::BlockNode node) -> void
|
90
83
|
def on_block_node_enter(node)
|
91
84
|
add_simple_range(node)
|
92
85
|
end
|
93
86
|
|
94
|
-
|
87
|
+
#: (Prism::CaseNode node) -> void
|
95
88
|
def on_case_node_enter(node)
|
96
89
|
add_simple_range(node)
|
97
90
|
end
|
98
91
|
|
99
|
-
|
92
|
+
#: (Prism::CaseMatchNode node) -> void
|
100
93
|
def on_case_match_node_enter(node)
|
101
94
|
add_simple_range(node)
|
102
95
|
end
|
103
96
|
|
104
|
-
|
97
|
+
#: (Prism::ClassNode node) -> void
|
105
98
|
def on_class_node_enter(node)
|
106
99
|
add_simple_range(node)
|
107
100
|
end
|
108
101
|
|
109
|
-
|
102
|
+
#: (Prism::ModuleNode node) -> void
|
110
103
|
def on_module_node_enter(node)
|
111
104
|
add_simple_range(node)
|
112
105
|
end
|
113
106
|
|
114
|
-
|
107
|
+
#: (Prism::ForNode node) -> void
|
115
108
|
def on_for_node_enter(node)
|
116
109
|
add_simple_range(node)
|
117
110
|
end
|
118
111
|
|
119
|
-
|
112
|
+
#: (Prism::HashNode node) -> void
|
120
113
|
def on_hash_node_enter(node)
|
121
114
|
add_simple_range(node)
|
122
115
|
end
|
123
116
|
|
124
|
-
|
117
|
+
#: (Prism::SingletonClassNode node) -> void
|
125
118
|
def on_singleton_class_node_enter(node)
|
126
119
|
add_simple_range(node)
|
127
120
|
end
|
128
121
|
|
129
|
-
|
122
|
+
#: (Prism::UnlessNode node) -> void
|
130
123
|
def on_unless_node_enter(node)
|
131
124
|
add_simple_range(node)
|
132
125
|
end
|
133
126
|
|
134
|
-
|
127
|
+
#: (Prism::UntilNode node) -> void
|
135
128
|
def on_until_node_enter(node)
|
136
129
|
add_simple_range(node)
|
137
130
|
end
|
138
131
|
|
139
|
-
|
132
|
+
#: (Prism::WhileNode node) -> void
|
140
133
|
def on_while_node_enter(node)
|
141
134
|
add_simple_range(node)
|
142
135
|
end
|
143
136
|
|
144
|
-
|
137
|
+
#: (Prism::ElseNode node) -> void
|
145
138
|
def on_else_node_enter(node)
|
146
139
|
add_simple_range(node)
|
147
140
|
end
|
148
141
|
|
149
|
-
|
142
|
+
#: (Prism::EnsureNode node) -> void
|
150
143
|
def on_ensure_node_enter(node)
|
151
144
|
add_simple_range(node)
|
152
145
|
end
|
153
146
|
|
154
|
-
|
147
|
+
#: (Prism::BeginNode node) -> void
|
155
148
|
def on_begin_node_enter(node)
|
156
149
|
add_simple_range(node)
|
157
150
|
end
|
158
151
|
|
159
|
-
|
152
|
+
#: (Prism::DefNode node) -> void
|
160
153
|
def on_def_node_enter(node)
|
161
154
|
params = node.parameters
|
162
155
|
parameter_loc = params&.location
|
@@ -171,7 +164,7 @@ module RubyLsp
|
|
171
164
|
end
|
172
165
|
end
|
173
166
|
|
174
|
-
|
167
|
+
#: (Prism::CallNode node) -> void
|
175
168
|
def on_call_node_enter(node)
|
176
169
|
# If we find a require, don't visit the child nodes (prevent `super`), so that we can keep accumulating into
|
177
170
|
# the `@requires` array and then push the range whenever we find a node that isn't a CallNode
|
@@ -184,14 +177,14 @@ module RubyLsp
|
|
184
177
|
add_lines_range(location.start_line, location.end_line - 1)
|
185
178
|
end
|
186
179
|
|
187
|
-
|
180
|
+
#: (Prism::LambdaNode node) -> void
|
188
181
|
def on_lambda_node_enter(node)
|
189
182
|
add_simple_range(node)
|
190
183
|
end
|
191
184
|
|
192
185
|
private
|
193
186
|
|
194
|
-
|
187
|
+
#: -> void
|
195
188
|
def push_comment_ranges
|
196
189
|
# Group comments that are on consecutive lines and then push ranges for each group that has at least 2 comments
|
197
190
|
@comments.chunk_while do |this, other|
|
@@ -200,19 +193,23 @@ module RubyLsp
|
|
200
193
|
next if chunk.length == 1
|
201
194
|
|
202
195
|
@response_builder << Interface::FoldingRange.new(
|
203
|
-
start_line:
|
204
|
-
|
196
|
+
start_line: chunk.first #: as !nil
|
197
|
+
.location.start_line - 1,
|
198
|
+
end_line: chunk.last #: as !nil
|
199
|
+
.location.end_line - 1,
|
205
200
|
kind: "comment",
|
206
201
|
)
|
207
202
|
end
|
208
203
|
end
|
209
204
|
|
210
|
-
|
205
|
+
#: -> void
|
211
206
|
def emit_requires_range
|
212
207
|
if @requires.length > 1
|
213
208
|
@response_builder << Interface::FoldingRange.new(
|
214
|
-
start_line:
|
215
|
-
|
209
|
+
start_line: @requires.first #: as !nil
|
210
|
+
.location.start_line - 1,
|
211
|
+
end_line: @requires.last #: as !nil
|
212
|
+
.location.end_line - 1,
|
216
213
|
kind: "imports",
|
217
214
|
)
|
218
215
|
end
|
@@ -220,7 +217,7 @@ module RubyLsp
|
|
220
217
|
@requires.clear
|
221
218
|
end
|
222
219
|
|
223
|
-
|
220
|
+
#: (Prism::CallNode node) -> bool
|
224
221
|
def require?(node)
|
225
222
|
message = node.message
|
226
223
|
return false unless message == "require" || message == "require_relative"
|
@@ -234,7 +231,7 @@ module RubyLsp
|
|
234
231
|
arguments.length == 1 && arguments.first.is_a?(Prism::StringNode)
|
235
232
|
end
|
236
233
|
|
237
|
-
|
234
|
+
#: ((Prism::IfNode | Prism::InNode | Prism::RescueNode | Prism::WhenNode) node) -> void
|
238
235
|
def add_statements_range(node)
|
239
236
|
statements = node.statements
|
240
237
|
return unless statements
|
@@ -245,13 +242,13 @@ module RubyLsp
|
|
245
242
|
add_lines_range(node.location.start_line, statement.location.end_line)
|
246
243
|
end
|
247
244
|
|
248
|
-
|
245
|
+
#: (Prism::Node node) -> void
|
249
246
|
def add_simple_range(node)
|
250
247
|
location = node.location
|
251
248
|
add_lines_range(location.start_line, location.end_line - 1)
|
252
249
|
end
|
253
250
|
|
254
|
-
|
251
|
+
#: (Integer start_line, Integer end_line) -> void
|
255
252
|
def add_lines_range(start_line, end_line)
|
256
253
|
emit_requires_range
|
257
254
|
return if start_line >= end_line
|