ruby-lsp 0.17.10 → 0.17.11
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/VERSION +1 -1
- data/lib/ruby_lsp/listeners/definition.rb +24 -3
- data/lib/ruby_lsp/requests/code_actions.rb +5 -2
- data/lib/ruby_lsp/requests/definition.rb +9 -2
- data/lib/ruby_lsp/requests/diagnostics.rb +6 -5
- data/lib/ruby_lsp/requests/document_symbol.rb +2 -7
- data/lib/ruby_lsp/requests/folding_ranges.rb +6 -2
- data/lib/ruby_lsp/requests/formatting.rb +13 -0
- data/lib/ruby_lsp/requests/hover.rb +2 -2
- data/lib/ruby_lsp/requests/on_type_formatting.rb +3 -2
- data/lib/ruby_lsp/server.rb +2 -9
- 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: 13815c41a1b7509782277cb5dac09481130e18efc4253a01cede31ca41b335a7
|
4
|
+
data.tar.gz: 40e6584ff6ff743ea1e62a29d6090d80bf318ae3dd5d90808de1b35723bea063
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74da4b254b598cd4b10701b65c49d045cc33be83330399e67602f8e43597c9e54567715343a67fa720b31084de540e498cc3d5525e64679500d52b4842e44cf7
|
7
|
+
data.tar.gz: 313695187e34ceb34c50d320bbe0abe0bda18d99157e8f4710faf8f72bc5028abd813511665fd4eac274dd73606eebb1c901b949fa307a8f925c2bfaa39b0c45
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.17.
|
1
|
+
0.17.11
|
@@ -46,6 +46,7 @@ module RubyLsp
|
|
46
46
|
:on_instance_variable_or_write_node_enter,
|
47
47
|
:on_instance_variable_target_node_enter,
|
48
48
|
:on_string_node_enter,
|
49
|
+
:on_symbol_node_enter,
|
49
50
|
:on_super_node_enter,
|
50
51
|
:on_forwarding_super_node_enter,
|
51
52
|
)
|
@@ -54,9 +55,7 @@ module RubyLsp
|
|
54
55
|
sig { params(node: Prism::CallNode).void }
|
55
56
|
def on_call_node_enter(node)
|
56
57
|
# Sorbet can handle go to definition for methods invoked on self on typed true or higher
|
57
|
-
if (@sorbet_level
|
58
|
-
self_receiver?(node)
|
59
|
-
end
|
58
|
+
return if sorbet_level_true_or_higher?(@sorbet_level) && self_receiver?(node)
|
60
59
|
|
61
60
|
message = node.message
|
62
61
|
return unless message
|
@@ -83,6 +82,17 @@ module RubyLsp
|
|
83
82
|
handle_require_definition(node, name)
|
84
83
|
end
|
85
84
|
|
85
|
+
sig { params(node: Prism::SymbolNode).void }
|
86
|
+
def on_symbol_node_enter(node)
|
87
|
+
enclosing_call = @node_context.call_node
|
88
|
+
return unless enclosing_call
|
89
|
+
|
90
|
+
name = enclosing_call.name
|
91
|
+
return unless name == :autoload
|
92
|
+
|
93
|
+
handle_autoload_definition(enclosing_call)
|
94
|
+
end
|
95
|
+
|
86
96
|
sig { params(node: Prism::BlockArgumentNode).void }
|
87
97
|
def on_block_argument_node_enter(node)
|
88
98
|
expression = node.expression
|
@@ -253,6 +263,17 @@ module RubyLsp
|
|
253
263
|
end
|
254
264
|
end
|
255
265
|
|
266
|
+
sig { params(node: Prism::CallNode).void }
|
267
|
+
def handle_autoload_definition(node)
|
268
|
+
argument = node.arguments&.arguments&.first
|
269
|
+
return unless argument.is_a?(Prism::SymbolNode)
|
270
|
+
|
271
|
+
constant_name = argument.value
|
272
|
+
return unless constant_name
|
273
|
+
|
274
|
+
find_in_index(constant_name)
|
275
|
+
end
|
276
|
+
|
256
277
|
sig { params(value: String).void }
|
257
278
|
def find_in_index(value)
|
258
279
|
entries = @index.resolve(value, @node_context.nesting)
|
@@ -25,9 +25,12 @@ module RubyLsp
|
|
25
25
|
class << self
|
26
26
|
extend T::Sig
|
27
27
|
|
28
|
-
sig { returns(Interface::
|
28
|
+
sig { returns(Interface::CodeActionRegistrationOptions) }
|
29
29
|
def provider
|
30
|
-
Interface::
|
30
|
+
Interface::CodeActionRegistrationOptions.new(
|
31
|
+
document_selector: [Interface::DocumentFilter.new(language: "ruby")],
|
32
|
+
resolve_provider: true,
|
33
|
+
)
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
@@ -30,6 +30,12 @@ module RubyLsp
|
|
30
30
|
extend T::Sig
|
31
31
|
extend T::Generic
|
32
32
|
|
33
|
+
SPECIAL_METHOD_CALLS = [
|
34
|
+
:require,
|
35
|
+
:require_relative,
|
36
|
+
:autoload,
|
37
|
+
].freeze
|
38
|
+
|
33
39
|
sig do
|
34
40
|
params(
|
35
41
|
document: Document,
|
@@ -78,8 +84,9 @@ module RubyLsp
|
|
78
84
|
parent,
|
79
85
|
position,
|
80
86
|
)
|
81
|
-
elsif target.is_a?(Prism::CallNode) && target.
|
82
|
-
|
87
|
+
elsif target.is_a?(Prism::CallNode) && !SPECIAL_METHOD_CALLS.include?(target.message) && !covers_position?(
|
88
|
+
target.message_loc, position
|
89
|
+
)
|
83
90
|
# If the target is a method call, we need to ensure that the requested position is exactly on top of the
|
84
91
|
# method identifier. Otherwise, we risk showing definitions for unrelated things
|
85
92
|
target = nil
|
@@ -22,12 +22,13 @@ module RubyLsp
|
|
22
22
|
class << self
|
23
23
|
extend T::Sig
|
24
24
|
|
25
|
-
sig { returns(
|
25
|
+
sig { returns(Interface::DiagnosticRegistrationOptions) }
|
26
26
|
def provider
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
Interface::DiagnosticRegistrationOptions.new(
|
28
|
+
document_selector: [Interface::DocumentFilter.new(language: "ruby")],
|
29
|
+
inter_file_dependencies: false,
|
30
|
+
workspace_diagnostics: false,
|
31
|
+
)
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
@@ -34,14 +34,9 @@ module RubyLsp
|
|
34
34
|
class << self
|
35
35
|
extend T::Sig
|
36
36
|
|
37
|
-
sig { returns(Interface::
|
37
|
+
sig { returns(Interface::DocumentSymbolOptions) }
|
38
38
|
def provider
|
39
|
-
Interface::
|
40
|
-
hierarchical_document_symbol_support: true,
|
41
|
-
symbol_kind: {
|
42
|
-
value_set: (Constant::SymbolKind::FILE..Constant::SymbolKind::TYPE_PARAMETER).to_a,
|
43
|
-
},
|
44
|
-
)
|
39
|
+
Interface::DocumentSymbolOptions.new
|
45
40
|
end
|
46
41
|
end
|
47
42
|
|
@@ -23,9 +23,13 @@ module RubyLsp
|
|
23
23
|
class << self
|
24
24
|
extend T::Sig
|
25
25
|
|
26
|
-
sig { returns(Interface::
|
26
|
+
sig { returns(Interface::FoldingRangeRegistrationOptions) }
|
27
27
|
def provider
|
28
|
-
Interface::
|
28
|
+
Interface::FoldingRangeRegistrationOptions.new(
|
29
|
+
document_selector: [
|
30
|
+
Interface::DocumentFilter.new(language: "ruby"),
|
31
|
+
],
|
32
|
+
)
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
@@ -27,6 +27,19 @@ module RubyLsp
|
|
27
27
|
|
28
28
|
class Error < StandardError; end
|
29
29
|
|
30
|
+
class << self
|
31
|
+
extend T::Sig
|
32
|
+
|
33
|
+
sig { returns(Interface::DocumentFormattingRegistrationOptions) }
|
34
|
+
def provider
|
35
|
+
Interface::DocumentFormattingRegistrationOptions.new(
|
36
|
+
document_selector: [
|
37
|
+
Interface::DocumentFilter.new(language: "ruby"),
|
38
|
+
],
|
39
|
+
)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
30
43
|
sig { params(global_state: GlobalState, document: Document).void }
|
31
44
|
def initialize(global_state, document)
|
32
45
|
super()
|
@@ -22,9 +22,9 @@ module RubyLsp
|
|
22
22
|
class << self
|
23
23
|
extend T::Sig
|
24
24
|
|
25
|
-
sig { returns(Interface::
|
25
|
+
sig { returns(Interface::HoverOptions) }
|
26
26
|
def provider
|
27
|
-
Interface::
|
27
|
+
Interface::HoverOptions.new
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -21,9 +21,10 @@ module RubyLsp
|
|
21
21
|
class << self
|
22
22
|
extend T::Sig
|
23
23
|
|
24
|
-
sig { returns(Interface::
|
24
|
+
sig { returns(Interface::DocumentOnTypeFormattingRegistrationOptions) }
|
25
25
|
def provider
|
26
|
-
Interface::
|
26
|
+
Interface::DocumentOnTypeFormattingRegistrationOptions.new(
|
27
|
+
document_selector: [Interface::DocumentFilter.new(language: "ruby")],
|
27
28
|
first_trigger_character: "{",
|
28
29
|
more_trigger_character: ["\n", "|", "d"],
|
29
30
|
)
|
data/lib/ruby_lsp/server.rb
CHANGED
@@ -181,6 +181,7 @@ module RubyLsp
|
|
181
181
|
hover_provider = Requests::Hover.provider if enabled_features["hover"]
|
182
182
|
folding_ranges_provider = Requests::FoldingRanges.provider if enabled_features["foldingRanges"]
|
183
183
|
semantic_tokens_provider = Requests::SemanticHighlighting.provider if enabled_features["semanticHighlighting"]
|
184
|
+
document_formatting_provider = Requests::Formatting.provider if enabled_features["formatting"]
|
184
185
|
diagnostics_provider = Requests::Diagnostics.provider if enabled_features["diagnostics"]
|
185
186
|
on_type_formatting_provider = Requests::OnTypeFormatting.provider if enabled_features["onTypeFormatting"]
|
186
187
|
code_action_provider = Requests::CodeActions.provider if enabled_features["codeActions"]
|
@@ -202,7 +203,7 @@ module RubyLsp
|
|
202
203
|
document_link_provider: document_link_provider,
|
203
204
|
folding_range_provider: folding_ranges_provider,
|
204
205
|
semantic_tokens_provider: semantic_tokens_provider,
|
205
|
-
document_formatting_provider:
|
206
|
+
document_formatting_provider: document_formatting_provider && @global_state.formatter != "none",
|
206
207
|
document_highlight_provider: enabled_features["documentHighlights"],
|
207
208
|
code_action_provider: code_action_provider,
|
208
209
|
document_on_type_formatting_provider: on_type_formatting_provider,
|
@@ -421,8 +422,6 @@ module RubyLsp
|
|
421
422
|
|
422
423
|
document = @store.get(uri)
|
423
424
|
|
424
|
-
return send_empty_response(message[:id]) if document.is_a?(ERBDocument)
|
425
|
-
|
426
425
|
response = Requests::Formatting.new(@global_state, document).perform
|
427
426
|
send_message(Result.new(id: message[:id], response: response))
|
428
427
|
rescue Requests::Request::InvalidFormatter => error
|
@@ -448,8 +447,6 @@ module RubyLsp
|
|
448
447
|
params = message[:params]
|
449
448
|
document = @store.get(params.dig(:textDocument, :uri))
|
450
449
|
|
451
|
-
return send_empty_response(message[:id]) if document.is_a?(ERBDocument)
|
452
|
-
|
453
450
|
send_message(
|
454
451
|
Result.new(
|
455
452
|
id: message[:id],
|
@@ -506,8 +503,6 @@ module RubyLsp
|
|
506
503
|
params = message[:params]
|
507
504
|
document = @store.get(params.dig(:textDocument, :uri))
|
508
505
|
|
509
|
-
return send_empty_response(message[:id]) if document.is_a?(ERBDocument)
|
510
|
-
|
511
506
|
send_message(
|
512
507
|
Result.new(
|
513
508
|
id: message[:id],
|
@@ -563,8 +558,6 @@ module RubyLsp
|
|
563
558
|
|
564
559
|
document = @store.get(uri)
|
565
560
|
|
566
|
-
return send_empty_response(message[:id]) if document.is_a?(ERBDocument)
|
567
|
-
|
568
561
|
response = document.cache_fetch("textDocument/diagnostic") do |document|
|
569
562
|
Requests::Diagnostics.new(@global_state, document).perform
|
570
563
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-lsp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
4
|
+
version: 0.17.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: language_server-protocol
|