ruby-lsp-rspec 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +39 -0
  4. data/CHANGELOG.md +5 -0
  5. data/CODE_OF_CONDUCT.md +84 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +45 -0
  8. data/Rakefile +12 -0
  9. data/lib/ruby-lsp-rspec.rb +11 -0
  10. data/lib/ruby_lsp/ruby_lsp_rspec/code_lens.rb +146 -0
  11. data/lib/ruby_lsp/ruby_lsp_rspec/extension.rb +38 -0
  12. data/lib/ruby_lsp_rspec/version.rb +8 -0
  13. data/misc/example.png +0 -0
  14. data/sorbet/config +4 -0
  15. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  16. data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
  17. data/sorbet/rbi/gems/base64@0.1.1.rbi +172 -0
  18. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1083 -0
  19. data/sorbet/rbi/gems/erubi@1.12.0.rbi +145 -0
  20. data/sorbet/rbi/gems/io-console@0.6.0.rbi +8 -0
  21. data/sorbet/rbi/gems/json@2.6.3.rbi +1533 -0
  22. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14237 -0
  23. data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  24. data/sorbet/rbi/gems/parallel@1.23.0.rbi +273 -0
  25. data/sorbet/rbi/gems/parser@3.2.2.3.rbi +7253 -0
  26. data/sorbet/rbi/gems/prettier_print@1.2.1.rbi +951 -0
  27. data/sorbet/rbi/gems/psych@5.1.0.rbi +1760 -0
  28. data/sorbet/rbi/gems/racc@1.7.1.rbi +161 -0
  29. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +402 -0
  30. data/sorbet/rbi/gems/rake@13.0.6.rbi +3024 -0
  31. data/sorbet/rbi/gems/rbi@0.0.17.rbi +2972 -0
  32. data/sorbet/rbi/gems/regexp_parser@2.8.1.rbi +3749 -0
  33. data/sorbet/rbi/gems/reline@0.3.8.rbi +2260 -0
  34. data/sorbet/rbi/gems/rexml@3.2.6.rbi +4781 -0
  35. data/sorbet/rbi/gems/rspec-core@3.12.2.rbi +10805 -0
  36. data/sorbet/rbi/gems/rspec-expectations@3.12.3.rbi +8100 -0
  37. data/sorbet/rbi/gems/rspec-mocks@3.12.5.rbi +5305 -0
  38. data/sorbet/rbi/gems/rspec-support@3.12.0.rbi +1611 -0
  39. data/sorbet/rbi/gems/rspec@3.12.0.rbi +82 -0
  40. data/sorbet/rbi/gems/rubocop-ast@1.29.0.rbi +6985 -0
  41. data/sorbet/rbi/gems/rubocop@1.56.2.rbi +56538 -0
  42. data/sorbet/rbi/gems/ruby-lsp@0.10.1.rbi +2903 -0
  43. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1317 -0
  44. data/sorbet/rbi/gems/spoom@1.2.3.rbi +3203 -0
  45. data/sorbet/rbi/gems/stringio@3.0.8.rbi +8 -0
  46. data/sorbet/rbi/gems/syntax_tree@6.1.1.rbi +22855 -0
  47. data/sorbet/rbi/gems/tapioca@0.11.8.rbi +3349 -0
  48. data/sorbet/rbi/gems/thor@1.2.2.rbi +3965 -0
  49. data/sorbet/rbi/gems/unicode-display_width@2.4.2.rbi +65 -0
  50. data/sorbet/rbi/gems/unparser@0.6.8.rbi +4525 -0
  51. data/sorbet/rbi/gems/yard-sorbet@0.8.1.rbi +428 -0
  52. data/sorbet/rbi/gems/yard@0.9.34.rbi +18219 -0
  53. data/sorbet/rbi/gems/yarp@0.11.0.rbi +15141 -0
  54. data/sorbet/rbi/shims/uri.rbi +14 -0
  55. data/sorbet/tapioca/config.yml +13 -0
  56. data/sorbet/tapioca/require.rb +8 -0
  57. metadata +115 -0
@@ -0,0 +1,2903 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `ruby-lsp` gem.
5
+ # Please instead update this file by running `bin/tapioca gem ruby-lsp`.
6
+
7
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/indexable_path.rb#4
8
+ module RubyIndexer
9
+ class << self
10
+ # source://ruby-lsp/lib/ruby_indexer/ruby_indexer.rb#18
11
+ sig { returns(::RubyIndexer::Configuration) }
12
+ def configuration; end
13
+ end
14
+ end
15
+
16
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/configuration.rb#5
17
+ class RubyIndexer::Configuration
18
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/configuration.rb#20
19
+ sig { void }
20
+ def initialize; end
21
+
22
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/configuration.rb#65
23
+ sig { returns(T::Array[::RubyIndexer::IndexablePath]) }
24
+ def indexables; end
25
+
26
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/configuration.rb#51
27
+ sig { void }
28
+ def load_config; end
29
+
30
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/configuration.rb#148
31
+ sig { returns(::Regexp) }
32
+ def magic_comment_regex; end
33
+
34
+ private
35
+
36
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/configuration.rb#170
37
+ sig { params(config: T::Hash[::String, T.untyped]).void }
38
+ def apply_config(config); end
39
+
40
+ # @raise [ArgumentError]
41
+ #
42
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/configuration.rb#155
43
+ sig { params(config: T::Hash[::String, T.untyped]).void }
44
+ def validate_config!(config); end
45
+ end
46
+
47
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/configuration.rb#8
48
+ RubyIndexer::Configuration::CONFIGURATION_SCHEMA = T.let(T.unsafe(nil), Hash)
49
+
50
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#5
51
+ class RubyIndexer::Index
52
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#12
53
+ sig { void }
54
+ def initialize; end
55
+
56
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#63
57
+ sig { params(entry: ::RubyIndexer::Index::Entry).void }
58
+ def <<(entry); end
59
+
60
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#72
61
+ sig { params(fully_qualified_name: ::String).returns(T.nilable(T::Array[::RubyIndexer::Index::Entry])) }
62
+ def [](fully_qualified_name); end
63
+
64
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#35
65
+ sig { params(indexable: ::RubyIndexer::IndexablePath).void }
66
+ def delete(indexable); end
67
+
68
+ # Fuzzy searches index entries based on Jaro-Winkler similarity. If no query is provided, all entries are returned
69
+ #
70
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#108
71
+ sig { params(query: T.nilable(::String)).returns(T::Array[::RubyIndexer::Index::Entry]) }
72
+ def fuzzy_search(query); end
73
+
74
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#139
75
+ sig { params(indexable_paths: T::Array[::RubyIndexer::IndexablePath]).void }
76
+ def index_all(indexable_paths: T.unsafe(nil)); end
77
+
78
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#144
79
+ sig { params(indexable_path: ::RubyIndexer::IndexablePath, source: T.nilable(::String)).void }
80
+ def index_single(indexable_path, source = T.unsafe(nil)); end
81
+
82
+ # Searches entries in the index based on an exact prefix, intended for providing autocomplete. All possible matches
83
+ # to the prefix are returned. The return is an array of arrays, where each entry is the array of entries for a given
84
+ # name match. For example:
85
+ # ## Example
86
+ # ```ruby
87
+ # # If the index has two entries for `Foo::Bar` and one for `Foo::Baz`, then:
88
+ # index.prefix_search("Foo::B")
89
+ # # Will return:
90
+ # [
91
+ # [#<Entry::Class name="Foo::Bar">, #<Entry::Class name="Foo::Bar">],
92
+ # [#<Entry::Class name="Foo::Baz">],
93
+ # ]
94
+ # ```
95
+ #
96
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#95
97
+ sig { params(query: ::String, nesting: T::Array[::String]).returns(T::Array[T::Array[::RubyIndexer::Index::Entry]]) }
98
+ def prefix_search(query, nesting); end
99
+
100
+ # Try to find the entry based on the nesting from the most specific to the least specific. For example, if we have
101
+ # the nesting as ["Foo", "Bar"] and the name as "Baz", we will try to find it in this order:
102
+ # 1. Foo::Bar::Baz
103
+ # 2. Foo::Baz
104
+ # 3. Baz
105
+ #
106
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#127
107
+ sig { params(name: ::String, nesting: T::Array[::String]).returns(T.nilable(T::Array[::RubyIndexer::Index::Entry])) }
108
+ def resolve(name, nesting); end
109
+
110
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#77
111
+ sig { params(query: ::String).returns(T::Array[::RubyIndexer::IndexablePath]) }
112
+ def search_require_paths(query); end
113
+ end
114
+
115
+ # The minimum Jaro-Winkler similarity score for an entry to be considered a match for a given fuzzy search query
116
+ #
117
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#9
118
+ RubyIndexer::Index::ENTRY_SIMILARITY_THRESHOLD = T.let(T.unsafe(nil), Float)
119
+
120
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#155
121
+ class RubyIndexer::Index::Entry
122
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#171
123
+ sig { params(name: ::String, file_path: ::String, location: ::YARP::Location, comments: T::Array[::String]).void }
124
+ def initialize(name, file_path, location, comments); end
125
+
126
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#168
127
+ sig { returns(T::Array[::String]) }
128
+ def comments; end
129
+
130
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#179
131
+ sig { returns(::String) }
132
+ def file_name; end
133
+
134
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#162
135
+ sig { returns(::String) }
136
+ def file_path; end
137
+
138
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#165
139
+ sig { returns(::YARP::Location) }
140
+ def location; end
141
+
142
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#159
143
+ sig { returns(::String) }
144
+ def name; end
145
+ end
146
+
147
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#193
148
+ class RubyIndexer::Index::Entry::Class < ::RubyIndexer::Index::Entry::Namespace; end
149
+
150
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#196
151
+ class RubyIndexer::Index::Entry::Constant < ::RubyIndexer::Index::Entry; end
152
+
153
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#190
154
+ class RubyIndexer::Index::Entry::Module < ::RubyIndexer::Index::Entry::Namespace; end
155
+
156
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#183
157
+ class RubyIndexer::Index::Entry::Namespace < ::RubyIndexer::Index::Entry
158
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/index.rb#185
159
+ sig { returns(::String) }
160
+ def short_name; end
161
+ end
162
+
163
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#5
164
+ class RubyIndexer::IndexVisitor < ::YARP::Visitor
165
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#9
166
+ sig { params(index: ::RubyIndexer::Index, parse_result: ::YARP::ParseResult, file_path: ::String).void }
167
+ def initialize(index, parse_result, file_path); end
168
+
169
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#25
170
+ sig { void }
171
+ def run; end
172
+
173
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#30
174
+ sig { params(node: T.nilable(::YARP::Node)).void }
175
+ def visit(node); end
176
+
177
+ # Override to avoid using `map` instead of `each`
178
+ #
179
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#47
180
+ sig { params(nodes: T::Array[T.nilable(::YARP::Node)]).void }
181
+ def visit_all(nodes); end
182
+
183
+ private
184
+
185
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#58
186
+ sig { params(node: T.any(::YARP::ConstantOrWriteNode, ::YARP::ConstantWriteNode)).void }
187
+ def add_constant(node); end
188
+
189
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#68
190
+ sig { params(node: T.any(::YARP::ConstantPathOrWriteNode, ::YARP::ConstantPathWriteNode)).void }
191
+ def add_constant_with_path(node); end
192
+
193
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#78
194
+ sig { params(node: T.any(::YARP::ClassNode, ::YARP::ModuleNode), klass: T.class_of(RubyIndexer::Index::Entry)).void }
195
+ def add_index_entry(node, klass); end
196
+
197
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#93
198
+ sig { params(node: ::YARP::Node).returns(T::Array[::String]) }
199
+ def collect_comments(node); end
200
+
201
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/visitor.rb#115
202
+ sig { params(name: ::String).returns(::String) }
203
+ def fully_qualify_name(name); end
204
+ end
205
+
206
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/indexable_path.rb#5
207
+ class RubyIndexer::IndexablePath
208
+ # An IndexablePath is instantiated with a load_path_entry and a full_path. The load_path_entry is where the file can
209
+ # be found in the $LOAD_PATH, which we use to determine the require_path. The load_path_entry may be `nil` if the
210
+ # indexer is configured to go through files that do not belong in the $LOAD_PATH. For example,
211
+ # `sorbet/tapioca/require.rb` ends up being a part of the paths to be indexed because it's a Ruby file inside the
212
+ # project, but the `sorbet` folder is not a part of the $LOAD_PATH. That means that both its load_path_entry and
213
+ # require_path will be `nil`, since it cannot be required by the project
214
+ #
215
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/indexable_path.rb#21
216
+ sig { params(load_path_entry: T.nilable(::String), full_path: ::String).void }
217
+ def initialize(load_path_entry, full_path); end
218
+
219
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/indexable_path.rb#12
220
+ sig { returns(::String) }
221
+ def full_path; end
222
+
223
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/indexable_path.rb#9
224
+ sig { returns(T.nilable(::String)) }
225
+ def require_path; end
226
+ end
227
+
228
+ # A PrefixTree is a data structure that allows searching for partial strings fast. The tree is similar to a nested
229
+ # hash structure, where the keys are the characters of the inserted strings.
230
+ #
231
+ # ## Example
232
+ # ```ruby
233
+ # tree = PrefixTree[String].new
234
+ # # Insert entries using the same key and value
235
+ # tree.insert("bar", "bar")
236
+ # tree.insert("baz", "baz")
237
+ # # Internally, the structure is analogous to this, but using nodes:
238
+ # # {
239
+ # # "b" => {
240
+ # # "a" => {
241
+ # # "r" => "bar",
242
+ # # "z" => "baz"
243
+ # # }
244
+ # # }
245
+ # # }
246
+ # # When we search it, it finds all possible values based on partial (or complete matches):
247
+ # tree.search("") # => ["bar", "baz"]
248
+ # tree.search("b") # => ["bar", "baz"]
249
+ # tree.search("ba") # => ["bar", "baz"]
250
+ # tree.search("bar") # => ["bar"]
251
+ # ```
252
+ #
253
+ # A PrefixTree is useful for autocomplete, since we always want to find all alternatives while the developer hasn't
254
+ # finished typing yet. This PrefixTree implementation allows for string keys and any arbitrary value using the generic
255
+ # `Value` type.
256
+ #
257
+ # See https://en.wikipedia.org/wiki/Trie for more information
258
+ #
259
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#35
260
+ class RubyIndexer::PrefixTree
261
+ extend T::Generic
262
+
263
+ Value = type_member
264
+
265
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#42
266
+ sig { void }
267
+ def initialize; end
268
+
269
+ # Deletes the entry identified by `key` from the tree. Notice that a partial match will still delete all entries
270
+ # that match it. For example, if the tree contains `foo` and we ask to delete `fo`, then `foo` will be deleted
271
+ #
272
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#77
273
+ sig { params(key: ::String).void }
274
+ def delete(key); end
275
+
276
+ # Inserts a `value` using the given `key`
277
+ #
278
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#60
279
+ sig { params(key: ::String, value: Value).void }
280
+ def insert(key, value); end
281
+
282
+ # Search the PrefixTree based on a given `prefix`. If `foo` is an entry in the tree, then searching for `fo` will
283
+ # return it as a result. The result is always an array of the type of value attribute to the generic `Value` type.
284
+ # Notice that if the `Value` is an array, this method will return an array of arrays, where each entry is the array
285
+ # of values for a given match
286
+ #
287
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#51
288
+ sig { params(prefix: ::String).returns(T::Array[Value]) }
289
+ def search(prefix); end
290
+
291
+ private
292
+
293
+ # Find a node that matches the given `key`
294
+ #
295
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#97
296
+ sig { params(key: ::String).returns(T.nilable(RubyIndexer::PrefixTree::Node[Value])) }
297
+ def find_node(key); end
298
+ end
299
+
300
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#110
301
+ class RubyIndexer::PrefixTree::Node
302
+ extend T::Generic
303
+
304
+ Value = type_member
305
+
306
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#132
307
+ sig { params(key: ::String, value: Value, parent: T.nilable(RubyIndexer::PrefixTree::Node[Value])).void }
308
+ def initialize(key, value, parent = T.unsafe(nil)); end
309
+
310
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#117
311
+ sig { returns(T::Hash[::String, RubyIndexer::PrefixTree::Node[Value]]) }
312
+ def children; end
313
+
314
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#141
315
+ sig { returns(T::Array[Value]) }
316
+ def collect; end
317
+
318
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#120
319
+ sig { returns(::String) }
320
+ def key; end
321
+
322
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#126
323
+ sig { returns(T::Boolean) }
324
+ def leaf; end
325
+
326
+ # @return [Boolean]
327
+ #
328
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#126
329
+ def leaf=(_arg0); end
330
+
331
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#129
332
+ sig { returns(T.nilable(RubyIndexer::PrefixTree::Node[Value])) }
333
+ def parent; end
334
+
335
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#123
336
+ sig { returns(Value) }
337
+ def value; end
338
+
339
+ # @return [Value]
340
+ #
341
+ # source://ruby-lsp/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb#123
342
+ def value=(_arg0); end
343
+ end
344
+
345
+ # source://ruby-lsp/lib/ruby-lsp.rb#4
346
+ module RubyLsp; end
347
+
348
+ # source://ruby-lsp/lib/ruby_lsp/server.rb#7
349
+ RubyLsp::Constant = LanguageServer::Protocol::Constant
350
+
351
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/dependency_detector.rb#5
352
+ module RubyLsp::DependencyDetector
353
+ class << self
354
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/dependency_detector.rb#10
355
+ sig { returns(::String) }
356
+ def detected_formatter; end
357
+
358
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/dependency_detector.rb#22
359
+ sig { returns(::String) }
360
+ def detected_test_library; end
361
+
362
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/dependency_detector.rb#45
363
+ sig { params(gem_pattern: ::Regexp).returns(T::Boolean) }
364
+ def direct_dependency?(gem_pattern); end
365
+
366
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/dependency_detector.rb#40
367
+ sig { returns(T::Boolean) }
368
+ def typechecker?; end
369
+ end
370
+ end
371
+
372
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/dependency_detector.rb#53
373
+ RubyLsp::DependencyDetector::HAS_TYPECHECKER = T.let(T.unsafe(nil), TrueClass)
374
+
375
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#5
376
+ class RubyLsp::Document
377
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#25
378
+ sig { params(source: ::String, version: ::Integer, uri: ::URI::Generic, encoding: ::String).void }
379
+ def initialize(source:, version:, uri:, encoding: T.unsafe(nil)); end
380
+
381
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#39
382
+ sig { params(other: ::RubyLsp::Document).returns(T::Boolean) }
383
+ def ==(other); end
384
+
385
+ # TODO: remove this method once all nonpositional requests have been migrated to the listener pattern
386
+ #
387
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#51
388
+ sig do
389
+ type_parameters(:T)
390
+ .params(
391
+ request_name: ::String,
392
+ block: T.proc.params(document: ::RubyLsp::Document).returns(T.type_parameter(:T))
393
+ ).returns(T.type_parameter(:T))
394
+ end
395
+ def cache_fetch(request_name, &block); end
396
+
397
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#66
398
+ sig { params(request_name: ::String).returns(T.untyped) }
399
+ def cache_get(request_name); end
400
+
401
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#61
402
+ sig { type_parameters(:T).params(request_name: ::String, value: T.type_parameter(:T)).returns(T.type_parameter(:T)) }
403
+ def cache_set(request_name, value); end
404
+
405
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#109
406
+ sig { returns(::RubyLsp::Document::Scanner) }
407
+ def create_scanner; end
408
+
409
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#132
410
+ sig do
411
+ params(
412
+ node: ::SyntaxTree::Node,
413
+ char_position: ::Integer,
414
+ node_types: T::Array[T.class_of(SyntaxTree::Node)]
415
+ ).returns([T.nilable(::SyntaxTree::Node), T.nilable(::SyntaxTree::Node), T::Array[::String]])
416
+ end
417
+ def locate(node, char_position, node_types: T.unsafe(nil)); end
418
+
419
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#119
420
+ sig do
421
+ params(
422
+ position: {line: ::Integer, character: ::Integer},
423
+ node_types: T::Array[T.class_of(SyntaxTree::Node)]
424
+ ).returns([T.nilable(::SyntaxTree::Node), T.nilable(::SyntaxTree::Node), T::Array[::String]])
425
+ end
426
+ def locate_node(position, node_types: T.unsafe(nil)); end
427
+
428
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#88
429
+ sig { void }
430
+ def parse; end
431
+
432
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#104
433
+ sig { returns(T::Boolean) }
434
+ def parsed?; end
435
+
436
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#71
437
+ sig do
438
+ params(
439
+ edits: T::Array[{range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}}, text: ::String}],
440
+ version: ::Integer
441
+ ).void
442
+ end
443
+ def push_edits(edits, version:); end
444
+
445
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#16
446
+ sig { returns(::String) }
447
+ def source; end
448
+
449
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#99
450
+ sig { returns(T::Boolean) }
451
+ def syntax_error?; end
452
+
453
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#13
454
+ sig { returns(T.nilable(::SyntaxTree::Node)) }
455
+ def tree; end
456
+
457
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#22
458
+ sig { returns(::URI::Generic) }
459
+ def uri; end
460
+
461
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#19
462
+ sig { returns(::Integer) }
463
+ def version; end
464
+ end
465
+
466
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#10
467
+ RubyLsp::Document::EditShape = T.type_alias { {range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}}, text: ::String} }
468
+
469
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#8
470
+ RubyLsp::Document::PositionShape = T.type_alias { {line: ::Integer, character: ::Integer} }
471
+
472
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#9
473
+ RubyLsp::Document::RangeShape = T.type_alias { {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}} }
474
+
475
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#182
476
+ class RubyLsp::Document::Scanner
477
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#190
478
+ sig { params(source: ::String, encoding: ::String).void }
479
+ def initialize(source, encoding); end
480
+
481
+ # Finds the character index inside the source string for a given line and column
482
+ #
483
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#199
484
+ sig { params(position: {line: ::Integer, character: ::Integer}).returns(::Integer) }
485
+ def find_char_position(position); end
486
+
487
+ # Subtract 1 for each character after 0xFFFF in the current line from the column position, so that we hit the
488
+ # right character in the UTF-8 representation
489
+ #
490
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#221
491
+ sig { params(current_position: ::Integer, requested_position: ::Integer).returns(::Integer) }
492
+ def utf_16_character_position_correction(current_position, requested_position); end
493
+ end
494
+
495
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#185
496
+ RubyLsp::Document::Scanner::LINE_BREAK = T.let(T.unsafe(nil), Integer)
497
+
498
+ # After character 0xFFFF, UTF-16 considers characters to have length 2 and we have to account for that
499
+ #
500
+ # source://ruby-lsp/lib/ruby_lsp/document.rb#187
501
+ RubyLsp::Document::Scanner::SURROGATE_PAIR_START = T.let(T.unsafe(nil), Integer)
502
+
503
+ # EventEmitter is an intermediary between our requests and Syntax Tree visitors. It's used to visit the document's AST
504
+ # and emit events that the requests can listen to for providing functionality. Usages:
505
+ #
506
+ # - For positional requests, locate the target node and use `emit_for_target` to fire events for each listener
507
+ # - For nonpositional requests, use `visit` to go through the AST, which will fire events for each listener as nodes
508
+ # are found
509
+ #
510
+ # # Example
511
+ #
512
+ # ```ruby
513
+ # target_node = document.locate_node(position)
514
+ # emitter = EventEmitter.new
515
+ # listener = Requests::Hover.new(emitter, @message_queue)
516
+ # emitter.emit_for_target(target_node)
517
+ # listener.response
518
+ # ```
519
+ #
520
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#21
521
+ class RubyLsp::EventEmitter < ::SyntaxTree::Visitor
522
+ include ::SyntaxTree::WithScope
523
+
524
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#26
525
+ sig { void }
526
+ def initialize; end
527
+
528
+ # Emit events for a specific node. This is similar to the regular `visit` method, but avoids going deeper into the
529
+ # tree for performance
530
+ #
531
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#39
532
+ sig { params(node: T.nilable(::SyntaxTree::Node)).void }
533
+ def emit_for_target(node); end
534
+
535
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#32
536
+ sig { params(listener: RubyLsp::Listener[T.untyped], events: ::Symbol).void }
537
+ def register(listener, *events); end
538
+
539
+ # Visit dispatchers are below. Notice that for nodes that create a new scope (e.g.: classes, modules, method defs)
540
+ # we need both an `on_*` and `after_*` event. This is because some requests must know when we exit the scope
541
+ #
542
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#59
543
+ sig { override.params(node: T.nilable(::SyntaxTree::Node)).void }
544
+ def visit(node); end
545
+
546
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#178
547
+ sig { override.params(node: ::SyntaxTree::Binary).void }
548
+ def visit_binary(node); end
549
+
550
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#166
551
+ sig { override.params(node: ::SyntaxTree::BlockVar).void }
552
+ def visit_block_var(node); end
553
+
554
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#92
555
+ sig { override.params(node: ::SyntaxTree::CallNode).void }
556
+ def visit_call(node); end
557
+
558
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#65
559
+ sig { override.params(node: ::SyntaxTree::ClassDeclaration).void }
560
+ def visit_class(node); end
561
+
562
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#79
563
+ sig { override.params(node: ::SyntaxTree::Command).void }
564
+ def visit_command(node); end
565
+
566
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#86
567
+ sig { override.params(node: ::SyntaxTree::CommandCall).void }
568
+ def visit_command_call(node); end
569
+
570
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#130
571
+ sig { override.params(node: ::SyntaxTree::Comment).void }
572
+ def visit_comment(node); end
573
+
574
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#184
575
+ sig { override.params(node: ::SyntaxTree::Const).void }
576
+ def visit_const(node); end
577
+
578
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#105
579
+ sig { override.params(node: ::SyntaxTree::ConstPathField).void }
580
+ def visit_const_path_field(node); end
581
+
582
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#117
583
+ sig { override.params(node: ::SyntaxTree::DefNode).void }
584
+ def visit_def(node); end
585
+
586
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#154
587
+ sig { override.params(node: ::SyntaxTree::Field).void }
588
+ def visit_field(node); end
589
+
590
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#142
591
+ sig { override.params(node: ::SyntaxTree::Kw).void }
592
+ def visit_kw(node); end
593
+
594
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#172
595
+ sig { override.params(node: ::SyntaxTree::LambdaVar).void }
596
+ def visit_lambda_var(node); end
597
+
598
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#72
599
+ sig { override.params(node: ::SyntaxTree::ModuleDeclaration).void }
600
+ def visit_module(node); end
601
+
602
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#148
603
+ sig { override.params(node: ::SyntaxTree::Params).void }
604
+ def visit_params(node); end
605
+
606
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#136
607
+ sig { override.params(node: ::SyntaxTree::Rescue).void }
608
+ def visit_rescue(node); end
609
+
610
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#111
611
+ sig { override.params(node: ::SyntaxTree::TopConstField).void }
612
+ def visit_top_const_field(node); end
613
+
614
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#124
615
+ sig { override.params(node: ::SyntaxTree::VarField).void }
616
+ def visit_var_field(node); end
617
+
618
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#160
619
+ sig { override.params(node: ::SyntaxTree::VarRef).void }
620
+ def visit_var_ref(node); end
621
+
622
+ # source://ruby-lsp/lib/ruby_lsp/event_emitter.rb#99
623
+ sig { override.params(node: ::SyntaxTree::VCall).void }
624
+ def visit_vcall(node); end
625
+ end
626
+
627
+ # This class dispatches a request execution to the right request class. No IO should happen anywhere here!
628
+ #
629
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#8
630
+ class RubyLsp::Executor
631
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#12
632
+ sig { params(store: ::RubyLsp::Store, message_queue: ::Thread::Queue).void }
633
+ def initialize(store, message_queue); end
634
+
635
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#22
636
+ sig { params(request: T::Hash[::Symbol, T.untyped]).returns(::RubyLsp::Result) }
637
+ def execute(request); end
638
+
639
+ private
640
+
641
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#527
642
+ sig { params(id: ::String, title: ::String).void }
643
+ def begin_progress(id, title); end
644
+
645
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#721
646
+ sig { void }
647
+ def check_formatter_is_available; end
648
+
649
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#404
650
+ sig do
651
+ params(
652
+ uri: ::URI::Generic,
653
+ range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}},
654
+ context: T::Hash[::Symbol, T.untyped]
655
+ ).returns(T.nilable(T::Array[::LanguageServer::Protocol::Interface::CodeAction]))
656
+ end
657
+ def code_action(uri, range, context); end
658
+
659
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#411
660
+ sig { params(params: T::Hash[::Symbol, T.untyped]).returns(::LanguageServer::Protocol::Interface::CodeAction) }
661
+ def code_action_resolve(params); end
662
+
663
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#472
664
+ sig do
665
+ params(
666
+ uri: ::URI::Generic,
667
+ position: {line: ::Integer, character: ::Integer}
668
+ ).returns(T.nilable(T::Array[::LanguageServer::Protocol::Interface::CompletionItem]))
669
+ end
670
+ def completion(uri, position); end
671
+
672
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#247
673
+ sig do
674
+ params(
675
+ uri: ::URI::Generic,
676
+ position: {line: ::Integer, character: ::Integer}
677
+ ).returns(T.nilable(T.any(::LanguageServer::Protocol::Interface::Location, T::Array[::LanguageServer::Protocol::Interface::Location])))
678
+ end
679
+ def definition(uri, position); end
680
+
681
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#441
682
+ sig do
683
+ params(
684
+ uri: ::URI::Generic
685
+ ).returns(T.nilable(::LanguageServer::Protocol::Interface::FullDocumentDiagnosticReport))
686
+ end
687
+ def diagnostic(uri); end
688
+
689
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#184
690
+ sig { params(changes: T::Array[{uri: ::String, type: ::Integer}]).returns(::Object) }
691
+ def did_change_watched_files(changes); end
692
+
693
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#372
694
+ sig do
695
+ params(
696
+ uri: ::URI::Generic,
697
+ position: {line: ::Integer, character: ::Integer}
698
+ ).returns(T.nilable(T::Array[::LanguageServer::Protocol::Interface::DocumentHighlight]))
699
+ end
700
+ def document_highlight(uri, position); end
701
+
702
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#545
703
+ sig { params(id: ::String).void }
704
+ def end_progress(id); end
705
+
706
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#265
707
+ sig { params(uri: ::URI::Generic).returns(T::Array[::LanguageServer::Protocol::Interface::FoldingRange]) }
708
+ def folding_range(uri); end
709
+
710
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#348
711
+ sig { params(uri: ::URI::Generic).returns(T.nilable(T::Array[::LanguageServer::Protocol::Interface::TextEdit])) }
712
+ def formatting(uri); end
713
+
714
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#277
715
+ sig do
716
+ params(
717
+ uri: ::URI::Generic,
718
+ position: {line: ::Integer, character: ::Integer}
719
+ ).returns(T.nilable(::LanguageServer::Protocol::Interface::Hover))
720
+ end
721
+ def hover(uri, position); end
722
+
723
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#558
724
+ sig do
725
+ params(
726
+ options: T::Hash[::Symbol, T.untyped]
727
+ ).returns(::LanguageServer::Protocol::Interface::InitializeResult)
728
+ end
729
+ def initialize_request(options); end
730
+
731
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#384
732
+ sig do
733
+ params(
734
+ uri: ::URI::Generic,
735
+ range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}}
736
+ ).returns(T.nilable(T::Array[::LanguageServer::Protocol::Interface::InlayHint]))
737
+ end
738
+ def inlay_hint(uri, range); end
739
+
740
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#362
741
+ sig do
742
+ params(
743
+ uri: ::URI::Generic,
744
+ position: {line: ::Integer, character: ::Integer},
745
+ character: ::String
746
+ ).returns(T::Array[::LanguageServer::Protocol::Interface::TextEdit])
747
+ end
748
+ def on_type_formatting(uri, position, character); end
749
+
750
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#209
751
+ sig { void }
752
+ def perform_initial_indexing; end
753
+
754
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#38
755
+ sig { params(request: T::Hash[::Symbol, T.untyped]).returns(T.untyped) }
756
+ def run(request); end
757
+
758
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#328
759
+ sig do
760
+ params(
761
+ uri: ::URI::Generic,
762
+ positions: T::Array[{line: ::Integer, character: ::Integer}]
763
+ ).returns(T.nilable(T::Array[T.nilable(::RubyLsp::Requests::Support::SelectionRange)]))
764
+ end
765
+ def selection_range(uri, positions); end
766
+
767
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#450
768
+ sig do
769
+ params(
770
+ uri: ::URI::Generic,
771
+ range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}}
772
+ ).returns(::LanguageServer::Protocol::Interface::SemanticTokens)
773
+ end
774
+ def semantic_tokens_range(uri, range); end
775
+
776
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#237
777
+ sig do
778
+ params(
779
+ uri: ::URI::Generic,
780
+ range: T.nilable({start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}})
781
+ ).returns({ast: ::String})
782
+ end
783
+ def show_syntax_tree(uri, range); end
784
+
785
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#305
786
+ sig do
787
+ params(
788
+ uri: ::URI::Generic,
789
+ content_changes: T::Array[{range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}}, text: ::String}],
790
+ version: ::Integer
791
+ ).returns(::Object)
792
+ end
793
+ def text_document_did_change(uri, content_changes, version); end
794
+
795
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#317
796
+ sig { params(uri: ::URI::Generic).returns(::Object) }
797
+ def text_document_did_close(uri); end
798
+
799
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#311
800
+ sig { params(uri: ::URI::Generic, text: ::String, version: ::Integer).returns(::Object) }
801
+ def text_document_did_open(uri, text, version); end
802
+
803
+ # source://ruby-lsp/lib/ruby_lsp/executor.rb#232
804
+ sig { params(query: T.nilable(::String)).returns(T::Array[::LanguageServer::Protocol::Interface::WorkspaceSymbol]) }
805
+ def workspace_symbol(query); end
806
+ end
807
+
808
+ # ExtensibleListener is an abstract class to be used by requests that accept extensions.
809
+ #
810
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
811
+ #
812
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#35
813
+ class RubyLsp::ExtensibleListener < ::RubyLsp::Listener
814
+ extend T::Generic
815
+
816
+ abstract!
817
+
818
+ ResponseType = type_member
819
+
820
+ # When inheriting from ExtensibleListener, the `super` of constructor must be called **after** the subclass's own
821
+ # ivars have been initialized. This is because the constructor of ExtensibleListener calls
822
+ # `initialize_external_listener` which may depend on the subclass's ivars.
823
+ #
824
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#47
825
+ sig { params(emitter: ::RubyLsp::EventEmitter, message_queue: ::Thread::Queue).void }
826
+ def initialize(emitter, message_queue); end
827
+
828
+ # @abstract
829
+ #
830
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#74
831
+ sig { abstract.params(extension: ::RubyLsp::Extension).returns(T.nilable(RubyLsp::Listener[ResponseType])) }
832
+ def initialize_external_listener(extension); end
833
+
834
+ # Merge responses from all external listeners into the base listener's response. We do this to return a single
835
+ # response to the editor including the results of all extensions
836
+ #
837
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#61
838
+ sig { void }
839
+ def merge_external_listeners_responses!; end
840
+
841
+ # Does nothing by default. Requests that accept extensions should override this method to define how to merge
842
+ # responses coming from external listeners
843
+ #
844
+ # @abstract
845
+ #
846
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#79
847
+ sig { abstract.params(other: RubyLsp::Listener[T.untyped]).returns(T.self_type) }
848
+ def merge_response!(other); end
849
+
850
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#66
851
+ sig { returns(ResponseType) }
852
+ def response; end
853
+ end
854
+
855
+ # To register an extension, inherit from this class and implement both `name` and `activate`
856
+ #
857
+ # # Example
858
+ #
859
+ # ```ruby
860
+ # module MyGem
861
+ # class MyExtension < Extension
862
+ # def activate
863
+ # # Perform any relevant initialization
864
+ # end
865
+ #
866
+ # def name
867
+ # "My extension name"
868
+ # end
869
+ # end
870
+ # end
871
+ # ```
872
+ #
873
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
874
+ #
875
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#22
876
+ class RubyLsp::Extension
877
+ abstract!
878
+
879
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#67
880
+ sig { void }
881
+ def initialize; end
882
+
883
+ # Each extension should implement `MyExtension#activate` and use to perform any sort of initialization, such as
884
+ # reading information into memory or even spawning a separate process
885
+ #
886
+ # @abstract
887
+ #
888
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#98
889
+ sig { abstract.void }
890
+ def activate; end
891
+
892
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#72
893
+ sig { params(error: ::StandardError).returns(T.self_type) }
894
+ def add_error(error); end
895
+
896
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#91
897
+ sig { returns(::String) }
898
+ def backtraces; end
899
+
900
+ # Creates a new CodeLens listener. This method is invoked on every CodeLens request
901
+ #
902
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#117
903
+ sig do
904
+ overridable
905
+ .params(
906
+ uri: ::URI::Generic,
907
+ emitter: ::RubyLsp::EventEmitter,
908
+ message_queue: ::Thread::Queue
909
+ ).returns(T.nilable(RubyLsp::Listener[T::Array[::LanguageServer::Protocol::Interface::CodeLens]]))
910
+ end
911
+ def create_code_lens_listener(uri, emitter, message_queue); end
912
+
913
+ # Creates a new Definition listener. This method is invoked on every Definition request
914
+ #
915
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#147
916
+ sig do
917
+ overridable
918
+ .params(
919
+ uri: ::URI::Generic,
920
+ nesting: T::Array[::String],
921
+ index: ::RubyIndexer::Index,
922
+ emitter: ::RubyLsp::EventEmitter,
923
+ message_queue: ::Thread::Queue
924
+ ).returns(T.nilable(RubyLsp::Listener[T.nilable(T.any(::LanguageServer::Protocol::Interface::Location, T::Array[::LanguageServer::Protocol::Interface::Location]))]))
925
+ end
926
+ def create_definition_listener(uri, nesting, index, emitter, message_queue); end
927
+
928
+ # Creates a new DocumentSymbol listener. This method is invoked on every DocumentSymbol request
929
+ #
930
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#135
931
+ sig do
932
+ overridable
933
+ .params(
934
+ emitter: ::RubyLsp::EventEmitter,
935
+ message_queue: ::Thread::Queue
936
+ ).returns(T.nilable(RubyLsp::Listener[T::Array[::LanguageServer::Protocol::Interface::DocumentSymbol]]))
937
+ end
938
+ def create_document_symbol_listener(emitter, message_queue); end
939
+
940
+ # Creates a new Hover listener. This method is invoked on every Hover request
941
+ #
942
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#126
943
+ sig do
944
+ overridable
945
+ .params(
946
+ emitter: ::RubyLsp::EventEmitter,
947
+ message_queue: ::Thread::Queue
948
+ ).returns(T.nilable(RubyLsp::Listener[T.nilable(::LanguageServer::Protocol::Interface::Hover)]))
949
+ end
950
+ def create_hover_listener(emitter, message_queue); end
951
+
952
+ # Each extension should implement `MyExtension#deactivate` and use to perform any clean up, like shutting down a
953
+ # child process
954
+ #
955
+ # @abstract
956
+ #
957
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#103
958
+ sig { abstract.void }
959
+ def deactivate; end
960
+
961
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#78
962
+ sig { returns(T::Boolean) }
963
+ def error?; end
964
+
965
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#83
966
+ sig { returns(::String) }
967
+ def formatted_errors; end
968
+
969
+ # Extensions should override the `name` method to return the extension name
970
+ #
971
+ # @abstract
972
+ #
973
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#107
974
+ sig { abstract.returns(::String) }
975
+ def name; end
976
+
977
+ class << self
978
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#39
979
+ sig { returns(T::Array[::RubyLsp::Extension]) }
980
+ def extensions; end
981
+
982
+ # Automatically track and instantiate extension classes
983
+ #
984
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#33
985
+ sig { params(child_class: T.class_of(RubyLsp::Extension)).void }
986
+ def inherited(child_class); end
987
+
988
+ # Discovers and loads all extensions. Returns the list of activated extensions
989
+ #
990
+ # source://ruby-lsp/lib/ruby_lsp/extension.rb#45
991
+ sig { returns(T::Array[::RubyLsp::Extension]) }
992
+ def load_extensions; end
993
+ end
994
+ end
995
+
996
+ # source://ruby-lsp/lib/ruby_lsp/server.rb#6
997
+ RubyLsp::Interface = LanguageServer::Protocol::Interface
998
+
999
+ # A request that will sit in the queue until it's executed
1000
+ #
1001
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#62
1002
+ class RubyLsp::Job
1003
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#72
1004
+ sig { params(request: T::Hash[::Symbol, T.untyped], cancelled: T::Boolean).void }
1005
+ def initialize(request:, cancelled:); end
1006
+
1007
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#78
1008
+ sig { void }
1009
+ def cancel; end
1010
+
1011
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#69
1012
+ sig { returns(T::Boolean) }
1013
+ def cancelled; end
1014
+
1015
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#66
1016
+ sig { returns(T::Hash[::Symbol, T.untyped]) }
1017
+ def request; end
1018
+ end
1019
+
1020
+ # Listener is an abstract class to be used by requests for listening to events emitted when visiting an AST using the
1021
+ # EventEmitter.
1022
+ #
1023
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
1024
+ #
1025
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#7
1026
+ class RubyLsp::Listener
1027
+ extend T::Generic
1028
+ include ::RubyLsp::Requests::Support::Common
1029
+
1030
+ abstract!
1031
+
1032
+ ResponseType = type_member
1033
+
1034
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#18
1035
+ sig { params(emitter: ::RubyLsp::EventEmitter, message_queue: ::Thread::Queue).void }
1036
+ def initialize(emitter, message_queue); end
1037
+
1038
+ # Override this method with an attr_reader that returns the response of your listener. The listener should
1039
+ # accumulate results in a @response variable and then provide the reader so that it is accessible
1040
+ #
1041
+ # @abstract
1042
+ #
1043
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#31
1044
+ sig { abstract.returns(ResponseType) }
1045
+ def _response; end
1046
+
1047
+ # source://ruby-lsp/lib/ruby_lsp/listener.rb#24
1048
+ sig { returns(ResponseType) }
1049
+ def response; end
1050
+ end
1051
+
1052
+ # A notification to be sent to the client
1053
+ #
1054
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
1055
+ #
1056
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#12
1057
+ class RubyLsp::Message
1058
+ abstract!
1059
+
1060
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#25
1061
+ sig { params(message: ::String, params: ::Object).void }
1062
+ def initialize(message:, params:); end
1063
+
1064
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#19
1065
+ sig { returns(::String) }
1066
+ def message; end
1067
+
1068
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#22
1069
+ sig { returns(::Object) }
1070
+ def params; end
1071
+ end
1072
+
1073
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#31
1074
+ class RubyLsp::Notification < ::RubyLsp::Message; end
1075
+
1076
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#32
1077
+ class RubyLsp::Request < ::RubyLsp::Message; end
1078
+
1079
+ # Supported features
1080
+ #
1081
+ # - [DocumentSymbol](rdoc-ref:RubyLsp::Requests::DocumentSymbol)
1082
+ # - [DocumentLink](rdoc-ref:RubyLsp::Requests::DocumentLink)
1083
+ # - [Hover](rdoc-ref:RubyLsp::Requests::Hover)
1084
+ # - [FoldingRange](rdoc-ref:RubyLsp::Requests::FoldingRanges)
1085
+ # - [SelectionRange](rdoc-ref:RubyLsp::Requests::SelectionRanges)
1086
+ # - [SemanticHighlighting](rdoc-ref:RubyLsp::Requests::SemanticHighlighting)
1087
+ # - [Formatting](rdoc-ref:RubyLsp::Requests::Formatting)
1088
+ # - [OnTypeFormatting](rdoc-ref:RubyLsp::Requests::OnTypeFormatting)
1089
+ # - [Diagnostic](rdoc-ref:RubyLsp::Requests::Diagnostics)
1090
+ # - [CodeAction](rdoc-ref:RubyLsp::Requests::CodeActions)
1091
+ # - [CodeActionResolve](rdoc-ref:RubyLsp::Requests::CodeActionResolve)
1092
+ # - [DocumentHighlight](rdoc-ref:RubyLsp::Requests::DocumentHighlight)
1093
+ # - [InlayHint](rdoc-ref:RubyLsp::Requests::InlayHints)
1094
+ # - [Completion](rdoc-ref:RubyLsp::Requests::Completion)
1095
+ # - [CodeLens](rdoc-ref:RubyLsp::Requests::CodeLens)
1096
+ # - [Definition](rdoc-ref:RubyLsp::Requests::Definition)
1097
+ # - [ShowSyntaxTree](rdoc-ref:RubyLsp::Requests::ShowSyntaxTree)
1098
+ # - [WorkspaceSymbol](rdoc-ref:RubyLsp::Requests::WorkspaceSymbol)
1099
+ #
1100
+ # source://ruby-lsp/lib/ruby_lsp/requests.rb#26
1101
+ module RubyLsp::Requests; end
1102
+
1103
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
1104
+ #
1105
+ # source://ruby-lsp/lib/ruby_lsp/requests/base_request.rb#7
1106
+ class RubyLsp::Requests::BaseRequest < ::SyntaxTree::Visitor
1107
+ include ::RubyLsp::Requests::Support::Common
1108
+
1109
+ abstract!
1110
+
1111
+ # source://ruby-lsp/lib/ruby_lsp/requests/base_request.rb#15
1112
+ sig { params(document: ::RubyLsp::Document).void }
1113
+ def initialize(document); end
1114
+
1115
+ # @abstract
1116
+ #
1117
+ # source://ruby-lsp/lib/ruby_lsp/requests/base_request.rb#21
1118
+ sig { abstract.returns(::Object) }
1119
+ def run; end
1120
+
1121
+ # Syntax Tree implements `visit_all` using `map` instead of `each` for users who want to use the pattern
1122
+ # `result = visitor.visit(tree)`. However, we don't use that pattern and should avoid producing a new array for
1123
+ # every single node visited
1124
+ #
1125
+ # source://ruby-lsp/lib/ruby_lsp/requests/base_request.rb#27
1126
+ sig { params(nodes: T::Array[T.nilable(::SyntaxTree::Node)]).void }
1127
+ def visit_all(nodes); end
1128
+ end
1129
+
1130
+ # ![Code action resolve demo](../../code_action_resolve.gif)
1131
+ #
1132
+ # The [code action resolve](https://microsoft.github.io/language-server-protocol/specification#codeAction_resolve)
1133
+ # request is used to to resolve the edit field for a given code action, if it is not already provided in the
1134
+ # textDocument/codeAction response. We can use it for scenarios that require more computation such as refactoring.
1135
+ #
1136
+ # # Example: Extract to variable
1137
+ #
1138
+ # ```ruby
1139
+ # # Before:
1140
+ # 1 + 1 # Select the text and use Refactor: Extract Variable
1141
+ #
1142
+ # # After:
1143
+ # new_variable = 1 + 1
1144
+ # new_variable
1145
+ #
1146
+ # ```
1147
+ #
1148
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_action_resolve.rb#24
1149
+ class RubyLsp::Requests::CodeActionResolve < ::RubyLsp::Requests::BaseRequest
1150
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_action_resolve.rb#38
1151
+ sig { params(document: ::RubyLsp::Document, code_action: T::Hash[::Symbol, T.untyped]).void }
1152
+ def initialize(document, code_action); end
1153
+
1154
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_action_resolve.rb#45
1155
+ sig do
1156
+ override
1157
+ .returns(T.any(::LanguageServer::Protocol::Interface::CodeAction, ::RubyLsp::Requests::CodeActionResolve::Error))
1158
+ end
1159
+ def run; end
1160
+
1161
+ private
1162
+
1163
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_action_resolve.rb#137
1164
+ sig do
1165
+ params(
1166
+ range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}},
1167
+ new_text: ::String
1168
+ ).returns(::LanguageServer::Protocol::Interface::TextEdit)
1169
+ end
1170
+ def create_text_edit(range, new_text); end
1171
+ end
1172
+
1173
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_action_resolve.rb#28
1174
+ class RubyLsp::Requests::CodeActionResolve::CodeActionError < ::StandardError; end
1175
+
1176
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_action_resolve.rb#30
1177
+ class RubyLsp::Requests::CodeActionResolve::Error < ::T::Enum
1178
+ enums do
1179
+ EmptySelection = new
1180
+ InvalidTargetRange = new
1181
+ end
1182
+ end
1183
+
1184
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_action_resolve.rb#26
1185
+ RubyLsp::Requests::CodeActionResolve::NEW_VARIABLE_NAME = T.let(T.unsafe(nil), String)
1186
+
1187
+ # ![Code actions demo](../../code_actions.gif)
1188
+ #
1189
+ # The [code actions](https://microsoft.github.io/language-server-protocol/specification#textDocument_codeAction)
1190
+ # request informs the editor of RuboCop quick fixes that can be applied. These are accessible by hovering over a
1191
+ # specific diagnostic.
1192
+ #
1193
+ # # Example
1194
+ #
1195
+ # ```ruby
1196
+ # def say_hello
1197
+ # puts "Hello" # --> code action: quick fix indentation
1198
+ # end
1199
+ # ```
1200
+ #
1201
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_actions.rb#19
1202
+ class RubyLsp::Requests::CodeActions < ::RubyLsp::Requests::BaseRequest
1203
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_actions.rb#29
1204
+ sig do
1205
+ params(
1206
+ document: ::RubyLsp::Document,
1207
+ range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}},
1208
+ context: T::Hash[::Symbol, T.untyped]
1209
+ ).void
1210
+ end
1211
+ def initialize(document, range, context); end
1212
+
1213
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_actions.rb#38
1214
+ sig { override.returns(T.nilable(T.all(::Object, T::Array[::LanguageServer::Protocol::Interface::CodeAction]))) }
1215
+ def run; end
1216
+
1217
+ private
1218
+
1219
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_actions.rb#59
1220
+ sig do
1221
+ params(
1222
+ range: T.nilable({start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}})
1223
+ ).returns(T::Boolean)
1224
+ end
1225
+ def cover?(range); end
1226
+
1227
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_actions.rb#67
1228
+ sig do
1229
+ params(
1230
+ range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}},
1231
+ uri: ::URI::Generic
1232
+ ).returns(::LanguageServer::Protocol::Interface::CodeAction)
1233
+ end
1234
+ def refactor_code_action(range, uri); end
1235
+ end
1236
+
1237
+ # ![Code lens demo](../../code_lens.gif)
1238
+ #
1239
+ # The
1240
+ # [code lens](https://microsoft.github.io/language-server-protocol/specification#textDocument_codeLens)
1241
+ # request informs the editor of runnable commands such as tests
1242
+ #
1243
+ # # Example
1244
+ #
1245
+ # ```ruby
1246
+ # # Run
1247
+ # class Test < Minitest::Test
1248
+ # end
1249
+ # ```
1250
+ #
1251
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#21
1252
+ class RubyLsp::Requests::CodeLens < ::RubyLsp::ExtensibleListener
1253
+ extend T::Generic
1254
+
1255
+ ResponseType = type_member { { fixed: T::Array[::LanguageServer::Protocol::Interface::CodeLens] } }
1256
+
1257
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#35
1258
+ sig do
1259
+ params(
1260
+ uri: ::URI::Generic,
1261
+ emitter: ::RubyLsp::EventEmitter,
1262
+ message_queue: ::Thread::Queue,
1263
+ test_library: ::String
1264
+ ).void
1265
+ end
1266
+ def initialize(uri, emitter, message_queue, test_library); end
1267
+
1268
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#32
1269
+ sig { override.returns(ResponseType) }
1270
+ def _response; end
1271
+
1272
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#134
1273
+ sig { params(node: ::SyntaxTree::CallNode).void }
1274
+ def after_call(node); end
1275
+
1276
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#76
1277
+ sig { params(node: ::SyntaxTree::ClassDeclaration).void }
1278
+ def after_class(node); end
1279
+
1280
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#115
1281
+ sig { params(node: ::SyntaxTree::Command).void }
1282
+ def after_command(node); end
1283
+
1284
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#150
1285
+ sig { override.params(extension: ::RubyLsp::Extension).returns(T.nilable(RubyLsp::Listener[ResponseType])) }
1286
+ def initialize_external_listener(extension); end
1287
+
1288
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#155
1289
+ sig { override.params(other: RubyLsp::Listener[ResponseType]).returns(T.self_type) }
1290
+ def merge_response!(other); end
1291
+
1292
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#121
1293
+ sig { params(node: ::SyntaxTree::CallNode).void }
1294
+ def on_call(node); end
1295
+
1296
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#60
1297
+ sig { params(node: ::SyntaxTree::ClassDeclaration).void }
1298
+ def on_class(node); end
1299
+
1300
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#101
1301
+ sig { params(node: ::SyntaxTree::Command).void }
1302
+ def on_command(node); end
1303
+
1304
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#82
1305
+ sig { params(node: ::SyntaxTree::DefNode).void }
1306
+ def on_def(node); end
1307
+
1308
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#140
1309
+ sig { params(node: ::SyntaxTree::VCall).void }
1310
+ def on_vcall(node); end
1311
+
1312
+ private
1313
+
1314
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#243
1315
+ sig { params(node: ::SyntaxTree::Command, remote: ::String).void }
1316
+ def add_open_gem_remote_code_lens(node, remote); end
1317
+
1318
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#163
1319
+ sig { params(node: ::SyntaxTree::Node, name: ::String, command: ::String, kind: ::Symbol).void }
1320
+ def add_test_code_lens(node, name:, command:, kind:); end
1321
+
1322
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#221
1323
+ sig { params(class_name: ::String, method_name: T.nilable(::String)).returns(::String) }
1324
+ def generate_test_command(class_name:, method_name: T.unsafe(nil)); end
1325
+
1326
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#205
1327
+ sig { params(node: ::SyntaxTree::Command).returns(T.nilable(::String)) }
1328
+ def resolve_gem_remote(node); end
1329
+ end
1330
+
1331
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#28
1332
+ RubyLsp::Requests::CodeLens::ACCESS_MODIFIERS = T.let(T.unsafe(nil), Array)
1333
+
1334
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#27
1335
+ RubyLsp::Requests::CodeLens::BASE_COMMAND = T.let(T.unsafe(nil), String)
1336
+
1337
+ # source://ruby-lsp/lib/ruby_lsp/requests/code_lens.rb#29
1338
+ RubyLsp::Requests::CodeLens::SUPPORTED_TEST_LIBRARIES = T.let(T.unsafe(nil), Array)
1339
+
1340
+ # ![Completion demo](../../completion.gif)
1341
+ #
1342
+ # The [completion](https://microsoft.github.io/language-server-protocol/specification#textDocument_completion)
1343
+ # suggests possible completions according to what the developer is typing. Currently, completion is support for
1344
+ # - require paths
1345
+ # - classes, modules and constant names
1346
+ #
1347
+ # # Example
1348
+ #
1349
+ # ```ruby
1350
+ # require "ruby_lsp/requests" # --> completion: suggests `base_request`, `code_actions`, ...
1351
+ #
1352
+ # RubyLsp::Requests:: # --> completion: suggests `Completion`, `Hover`, ...
1353
+ # ```
1354
+ #
1355
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#20
1356
+ class RubyLsp::Requests::Completion < ::RubyLsp::Listener
1357
+ extend T::Generic
1358
+
1359
+ ResponseType = type_member { { fixed: T::Array[::LanguageServer::Protocol::Interface::CompletionItem] } }
1360
+
1361
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#37
1362
+ sig do
1363
+ params(
1364
+ index: ::RubyIndexer::Index,
1365
+ nesting: T::Array[::String],
1366
+ emitter: ::RubyLsp::EventEmitter,
1367
+ message_queue: ::Thread::Queue
1368
+ ).void
1369
+ end
1370
+ def initialize(index, nesting, emitter, message_queue); end
1371
+
1372
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#27
1373
+ sig { override.returns(ResponseType) }
1374
+ def _response; end
1375
+
1376
+ # Handle completion on regular constant references (e.g. `Bar`)
1377
+ #
1378
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#55
1379
+ sig { params(node: ::SyntaxTree::Const).void }
1380
+ def on_const(node); end
1381
+
1382
+ # Handle completion on namespaced constant references (e.g. `Foo::Bar`)
1383
+ #
1384
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#67
1385
+ sig { params(node: ::SyntaxTree::ConstPathRef).void }
1386
+ def on_const_path_ref(node); end
1387
+
1388
+ # Handle completion on top level constant references (e.g. `::Bar`)
1389
+ #
1390
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#79
1391
+ sig { params(node: ::SyntaxTree::TopConstRef).void }
1392
+ def on_top_const_ref(node); end
1393
+
1394
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#47
1395
+ sig { params(node: ::SyntaxTree::TStringContent).void }
1396
+ def on_tstring_content(node); end
1397
+
1398
+ private
1399
+
1400
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#90
1401
+ sig do
1402
+ params(
1403
+ label: ::String,
1404
+ node: ::SyntaxTree::TStringContent
1405
+ ).returns(::LanguageServer::Protocol::Interface::CompletionItem)
1406
+ end
1407
+ def build_completion(label, node); end
1408
+
1409
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#109
1410
+ sig do
1411
+ params(
1412
+ name: ::String,
1413
+ node: ::SyntaxTree::Node,
1414
+ entries: T::Array[::RubyIndexer::Index::Entry],
1415
+ top_level: T::Boolean
1416
+ ).returns(::LanguageServer::Protocol::Interface::CompletionItem)
1417
+ end
1418
+ def build_entry_completion(name, node, entries, top_level); end
1419
+
1420
+ # Check if the `entry_name` has potential conflicts in `candidates`, so that we use a top level reference instead
1421
+ # of a short name
1422
+ #
1423
+ # source://ruby-lsp/lib/ruby_lsp/requests/completion.rb#163
1424
+ sig { params(entry_name: ::String, candidates: T::Array[T::Array[::RubyIndexer::Index::Entry]]).returns(T::Boolean) }
1425
+ def top_level?(entry_name, candidates); end
1426
+ end
1427
+
1428
+ # ![Definition demo](../../definition.gif)
1429
+ #
1430
+ # The [definition
1431
+ # request](https://microsoft.github.io/language-server-protocol/specification#textDocument_definition) jumps to the
1432
+ # definition of the symbol under the cursor.
1433
+ #
1434
+ # Currently, only jumping to classes, modules and required files is supported.
1435
+ #
1436
+ # # Example
1437
+ #
1438
+ # ```ruby
1439
+ # require "some_gem/file" # <- Request go to definition on this string will take you to the file
1440
+ # Product.new # <- Request go to definition on this class name will take you to its declaration.
1441
+ # ```
1442
+ #
1443
+ # source://ruby-lsp/lib/ruby_lsp/requests/definition.rb#20
1444
+ class RubyLsp::Requests::Definition < ::RubyLsp::ExtensibleListener
1445
+ extend T::Generic
1446
+
1447
+ ResponseType = type_member { { fixed: T.nilable(T.any(::LanguageServer::Protocol::Interface::Location, T::Array[::LanguageServer::Protocol::Interface::Location])) } }
1448
+
1449
+ # source://ruby-lsp/lib/ruby_lsp/requests/definition.rb#38
1450
+ sig do
1451
+ params(
1452
+ uri: ::URI::Generic,
1453
+ nesting: T::Array[::String],
1454
+ index: ::RubyIndexer::Index,
1455
+ emitter: ::RubyLsp::EventEmitter,
1456
+ message_queue: ::Thread::Queue
1457
+ ).void
1458
+ end
1459
+ def initialize(uri, nesting, index, emitter, message_queue); end
1460
+
1461
+ # source://ruby-lsp/lib/ruby_lsp/requests/definition.rb#27
1462
+ sig { override.returns(ResponseType) }
1463
+ def _response; end
1464
+
1465
+ # source://ruby-lsp/lib/ruby_lsp/requests/definition.rb#50
1466
+ sig { override.params(ext: ::RubyLsp::Extension).returns(T.nilable(RubyLsp::Listener[ResponseType])) }
1467
+ def initialize_external_listener(ext); end
1468
+
1469
+ # source://ruby-lsp/lib/ruby_lsp/requests/definition.rb#55
1470
+ sig { override.params(other: RubyLsp::Listener[ResponseType]).returns(T.self_type) }
1471
+ def merge_response!(other); end
1472
+
1473
+ # source://ruby-lsp/lib/ruby_lsp/requests/definition.rb#82
1474
+ sig { params(node: ::SyntaxTree::Command).void }
1475
+ def on_command(node); end
1476
+
1477
+ # source://ruby-lsp/lib/ruby_lsp/requests/definition.rb#77
1478
+ sig { params(node: ::SyntaxTree::Const).void }
1479
+ def on_const(node); end
1480
+
1481
+ # source://ruby-lsp/lib/ruby_lsp/requests/definition.rb#71
1482
+ sig { params(node: ::SyntaxTree::ConstPathRef).void }
1483
+ def on_const_path_ref(node); end
1484
+
1485
+ private
1486
+
1487
+ # source://ruby-lsp/lib/ruby_lsp/requests/definition.rb#128
1488
+ sig { params(value: ::String).void }
1489
+ def find_in_index(value); end
1490
+ end
1491
+
1492
+ # ![Diagnostics demo](../../diagnostics.gif)
1493
+ #
1494
+ # The
1495
+ # [diagnostics](https://microsoft.github.io/language-server-protocol/specification#textDocument_publishDiagnostics)
1496
+ # request informs the editor of RuboCop offenses for a given file.
1497
+ #
1498
+ # # Example
1499
+ #
1500
+ # ```ruby
1501
+ # def say_hello
1502
+ # puts "Hello" # --> diagnostics: incorrect indentation
1503
+ # end
1504
+ # ```
1505
+ #
1506
+ # source://ruby-lsp/lib/ruby_lsp/requests/diagnostics.rb#21
1507
+ class RubyLsp::Requests::Diagnostics < ::RubyLsp::Requests::BaseRequest
1508
+ # source://ruby-lsp/lib/ruby_lsp/requests/diagnostics.rb#25
1509
+ sig { params(document: ::RubyLsp::Document).void }
1510
+ def initialize(document); end
1511
+
1512
+ # source://ruby-lsp/lib/ruby_lsp/requests/diagnostics.rb#32
1513
+ sig { override.returns(T.nilable(T.all(::Object, T::Array[::RubyLsp::Requests::Support::RuboCopDiagnostic]))) }
1514
+ def run; end
1515
+ end
1516
+
1517
+ # ![Document highlight demo](../../document_highlight.gif)
1518
+ #
1519
+ # The [document highlight](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentHighlight)
1520
+ # informs the editor all relevant elements of the currently pointed item for highlighting. For example, when
1521
+ # the cursor is on the `F` of the constant `FOO`, the editor should identify other occurrences of `FOO`
1522
+ # and highlight them.
1523
+ #
1524
+ # For writable elements like constants or variables, their read/write occurrences should be highlighted differently.
1525
+ # This is achieved by sending different "kind" attributes to the editor (2 for read and 3 for write).
1526
+ #
1527
+ # # Example
1528
+ #
1529
+ # ```ruby
1530
+ # FOO = 1 # should be highlighted as "write"
1531
+ #
1532
+ # def foo
1533
+ # FOO # should be highlighted as "read"
1534
+ # end
1535
+ # ```
1536
+ #
1537
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_highlight.rb#25
1538
+ class RubyLsp::Requests::DocumentHighlight < ::RubyLsp::Listener
1539
+ extend T::Generic
1540
+
1541
+ ResponseType = type_member { { fixed: T::Array[::LanguageServer::Protocol::Interface::DocumentHighlight] } }
1542
+
1543
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_highlight.rb#41
1544
+ sig do
1545
+ params(
1546
+ target: T.nilable(::SyntaxTree::Node),
1547
+ parent: T.nilable(::SyntaxTree::Node),
1548
+ emitter: ::RubyLsp::EventEmitter,
1549
+ message_queue: ::Thread::Queue
1550
+ ).void
1551
+ end
1552
+ def initialize(target, parent, emitter, message_queue); end
1553
+
1554
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_highlight.rb#31
1555
+ sig { override.returns(ResponseType) }
1556
+ def _response; end
1557
+
1558
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_highlight.rb#63
1559
+ sig { params(node: T.nilable(::SyntaxTree::Node)).void }
1560
+ def on_node(node); end
1561
+
1562
+ private
1563
+
1564
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_highlight.rb#84
1565
+ sig { params(match: ::RubyLsp::Requests::Support::HighlightTarget::HighlightMatch).void }
1566
+ def add_highlight(match); end
1567
+ end
1568
+
1569
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_highlight.rb#72
1570
+ RubyLsp::Requests::DocumentHighlight::DIRECT_HIGHLIGHTS = T.let(T.unsafe(nil), Array)
1571
+
1572
+ # ![Document link demo](../../document_link.gif)
1573
+ #
1574
+ # The [document link](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentLink)
1575
+ # makes `# source://PATH_TO_FILE#line` comments in a Ruby/RBI file clickable if the file exists.
1576
+ # When the user clicks the link, it'll open that location.
1577
+ #
1578
+ # # Example
1579
+ #
1580
+ # ```ruby
1581
+ # # source://syntax_tree/3.2.1/lib/syntax_tree.rb#51 <- it will be clickable and will take the user to that location
1582
+ # def format(source, maxwidth = T.unsafe(nil))
1583
+ # end
1584
+ # ```
1585
+ #
1586
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_link.rb#21
1587
+ class RubyLsp::Requests::DocumentLink < ::RubyLsp::Listener
1588
+ extend T::Generic
1589
+
1590
+ ResponseType = type_member { { fixed: T::Array[::LanguageServer::Protocol::Interface::DocumentLink] } }
1591
+
1592
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_link.rb#79
1593
+ sig { params(uri: ::URI::Generic, emitter: ::RubyLsp::EventEmitter, message_queue: ::Thread::Queue).void }
1594
+ def initialize(uri, emitter, message_queue); end
1595
+
1596
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_link.rb#76
1597
+ sig { override.returns(ResponseType) }
1598
+ def _response; end
1599
+
1600
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_link.rb#93
1601
+ sig { params(node: ::SyntaxTree::Comment).void }
1602
+ def on_comment(node); end
1603
+
1604
+ private
1605
+
1606
+ # Try to figure out the gem version for a source:// link. The order of precedence is:
1607
+ # 1. The version in the URI
1608
+ # 2. The version in the RBI file name
1609
+ # 3. The version from the gemspec
1610
+ #
1611
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_link.rb#118
1612
+ sig { params(uri: ::URI::Source).returns(T.nilable(::String)) }
1613
+ def resolve_version(uri); end
1614
+
1615
+ class << self
1616
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_link.rb#38
1617
+ sig { returns(T::Hash[::String, T::Hash[::String, T::Hash[::String, ::String]]]) }
1618
+ def gem_paths; end
1619
+ end
1620
+ end
1621
+
1622
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_link.rb#27
1623
+ RubyLsp::Requests::DocumentLink::GEM_TO_VERSION_MAP = T.let(T.unsafe(nil), Hash)
1624
+
1625
+ # ![Document symbol demo](../../document_symbol.gif)
1626
+ #
1627
+ # The [document
1628
+ # symbol](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentSymbol) request
1629
+ # informs the editor of all the important symbols, such as classes, variables, and methods, defined in a file. With
1630
+ # this information, the editor can populate breadcrumbs, file outline and allow for fuzzy symbol searches.
1631
+ #
1632
+ # In VS Code, fuzzy symbol search can be accessed by opening the command palette and inserting an `@` symbol.
1633
+ #
1634
+ # # Example
1635
+ #
1636
+ # ```ruby
1637
+ # class Person # --> document symbol: class
1638
+ # attr_reader :age # --> document symbol: field
1639
+ #
1640
+ # def initialize
1641
+ # @age = 0 # --> document symbol: variable
1642
+ # end
1643
+ #
1644
+ # def age # --> document symbol: method
1645
+ # end
1646
+ # end
1647
+ # ```
1648
+ #
1649
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#29
1650
+ class RubyLsp::Requests::DocumentSymbol < ::RubyLsp::ExtensibleListener
1651
+ extend T::Generic
1652
+
1653
+ ResponseType = type_member { { fixed: T::Array[::LanguageServer::Protocol::Interface::DocumentSymbol] } }
1654
+
1655
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#53
1656
+ sig { params(emitter: ::RubyLsp::EventEmitter, message_queue: ::Thread::Queue).void }
1657
+ def initialize(emitter, message_queue); end
1658
+
1659
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#50
1660
+ sig { override.returns(T::Array[::LanguageServer::Protocol::Interface::DocumentSymbol]) }
1661
+ def _response; end
1662
+
1663
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#101
1664
+ sig { params(node: ::SyntaxTree::ClassDeclaration).void }
1665
+ def after_class(node); end
1666
+
1667
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#154
1668
+ sig { params(node: ::SyntaxTree::DefNode).void }
1669
+ def after_def(node); end
1670
+
1671
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#169
1672
+ sig { params(node: ::SyntaxTree::ModuleDeclaration).void }
1673
+ def after_module(node); end
1674
+
1675
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#79
1676
+ sig { override.params(extension: ::RubyLsp::Extension).returns(T.nilable(RubyLsp::Listener[ResponseType])) }
1677
+ def initialize_external_listener(extension); end
1678
+
1679
+ # Merges responses from other listeners
1680
+ #
1681
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#85
1682
+ sig { override.params(other: RubyLsp::Listener[ResponseType]).returns(T.self_type) }
1683
+ def merge_response!(other); end
1684
+
1685
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#91
1686
+ sig { params(node: ::SyntaxTree::ClassDeclaration).void }
1687
+ def on_class(node); end
1688
+
1689
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#106
1690
+ sig { params(node: ::SyntaxTree::Command).void }
1691
+ def on_command(node); end
1692
+
1693
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#122
1694
+ sig { params(node: ::SyntaxTree::ConstPathField).void }
1695
+ def on_const_path_field(node); end
1696
+
1697
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#132
1698
+ sig { params(node: ::SyntaxTree::DefNode).void }
1699
+ def on_def(node); end
1700
+
1701
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#159
1702
+ sig { params(node: ::SyntaxTree::ModuleDeclaration).void }
1703
+ def on_module(node); end
1704
+
1705
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#174
1706
+ sig { params(node: ::SyntaxTree::TopConstField).void }
1707
+ def on_top_const_field(node); end
1708
+
1709
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#184
1710
+ sig { params(node: ::SyntaxTree::VarField).void }
1711
+ def on_var_field(node); end
1712
+
1713
+ private
1714
+
1715
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#213
1716
+ sig do
1717
+ params(
1718
+ name: ::String,
1719
+ kind: ::Integer,
1720
+ range_node: ::SyntaxTree::Node,
1721
+ selection_range_node: ::SyntaxTree::Node
1722
+ ).returns(::LanguageServer::Protocol::Interface::DocumentSymbol)
1723
+ end
1724
+ def create_document_symbol(name:, kind:, range_node:, selection_range_node:); end
1725
+ end
1726
+
1727
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#35
1728
+ RubyLsp::Requests::DocumentSymbol::ATTR_ACCESSORS = T.let(T.unsafe(nil), Array)
1729
+
1730
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#37
1731
+ class RubyLsp::Requests::DocumentSymbol::SymbolHierarchyRoot
1732
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#44
1733
+ sig { void }
1734
+ def initialize; end
1735
+
1736
+ # source://ruby-lsp/lib/ruby_lsp/requests/document_symbol.rb#41
1737
+ sig { returns(T::Array[::LanguageServer::Protocol::Interface::DocumentSymbol]) }
1738
+ def children; end
1739
+ end
1740
+
1741
+ # ![Folding ranges demo](../../folding_ranges.gif)
1742
+ #
1743
+ # The [folding ranges](https://microsoft.github.io/language-server-protocol/specification#textDocument_foldingRange)
1744
+ # request informs the editor of the ranges where and how code can be folded.
1745
+ #
1746
+ # # Example
1747
+ #
1748
+ # ```ruby
1749
+ # def say_hello # <-- folding range start
1750
+ # puts "Hello"
1751
+ # end # <-- folding range end
1752
+ # ```
1753
+ #
1754
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#18
1755
+ class RubyLsp::Requests::FoldingRanges < ::RubyLsp::Requests::BaseRequest
1756
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#64
1757
+ sig { params(document: ::RubyLsp::Document).void }
1758
+ def initialize(document); end
1759
+
1760
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#72
1761
+ sig { override.returns(T.all(::Object, T::Array[::LanguageServer::Protocol::Interface::FoldingRange])) }
1762
+ def run; end
1763
+
1764
+ private
1765
+
1766
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#223
1767
+ sig { params(node: T.any(::SyntaxTree::CallNode, ::SyntaxTree::CommandCall)).void }
1768
+ def add_call_range(node); end
1769
+
1770
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#257
1771
+ sig { params(node: ::SyntaxTree::DefNode).void }
1772
+ def add_def_range(node); end
1773
+
1774
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#296
1775
+ sig { params(start_line: ::Integer, end_line: ::Integer).void }
1776
+ def add_lines_range(start_line, end_line); end
1777
+
1778
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#281
1779
+ sig { params(node: ::SyntaxTree::Node, statements: ::SyntaxTree::Statements).void }
1780
+ def add_statements_range(node, statements); end
1781
+
1782
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#288
1783
+ sig { params(node: ::SyntaxTree::StringConcat).void }
1784
+ def add_string_concat(node); end
1785
+
1786
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#215
1787
+ sig { void }
1788
+ def emit_partial_range; end
1789
+
1790
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#181
1791
+ sig { params(node: T.nilable(::SyntaxTree::Node)).returns(T::Boolean) }
1792
+ def handle_partial_range(node); end
1793
+
1794
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#203
1795
+ sig { params(node: T.nilable(::SyntaxTree::Node)).returns(T.nilable(::String)) }
1796
+ def partial_range_kind(node); end
1797
+
1798
+ # This is to prevent duplicate ranges
1799
+ #
1800
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#120
1801
+ sig { params(node: T.any(::SyntaxTree::Command, ::SyntaxTree::CommandCall)).returns(T::Boolean) }
1802
+ def same_lines_for_command_and_block?(node); end
1803
+
1804
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#84
1805
+ sig { override.params(node: T.nilable(::SyntaxTree::Node)).void }
1806
+ def visit(node); end
1807
+ end
1808
+
1809
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#42
1810
+ RubyLsp::Requests::FoldingRanges::NODES_WITH_STATEMENTS = T.let(T.unsafe(nil), Array)
1811
+
1812
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#129
1813
+ class RubyLsp::Requests::FoldingRanges::PartialRange
1814
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#148
1815
+ sig { params(start_line: ::Integer, end_line: ::Integer, kind: ::String).void }
1816
+ def initialize(start_line, end_line, kind); end
1817
+
1818
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#136
1819
+ sig { returns(::Integer) }
1820
+ def end_line; end
1821
+
1822
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#155
1823
+ sig { params(node: ::SyntaxTree::Node).returns(::RubyLsp::Requests::FoldingRanges::PartialRange) }
1824
+ def extend_to(node); end
1825
+
1826
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#133
1827
+ sig { returns(::String) }
1828
+ def kind; end
1829
+
1830
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#175
1831
+ sig { returns(T::Boolean) }
1832
+ def multiline?; end
1833
+
1834
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#161
1835
+ sig { params(node: ::SyntaxTree::Node).returns(T::Boolean) }
1836
+ def new_section?(node); end
1837
+
1838
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#166
1839
+ sig { returns(::LanguageServer::Protocol::Interface::FoldingRange) }
1840
+ def to_range; end
1841
+
1842
+ class << self
1843
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#142
1844
+ sig { params(node: ::SyntaxTree::Node, kind: ::String).returns(::RubyLsp::Requests::FoldingRanges::PartialRange) }
1845
+ def from(node, kind); end
1846
+ end
1847
+ end
1848
+
1849
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#21
1850
+ RubyLsp::Requests::FoldingRanges::SIMPLE_FOLDABLES = T.let(T.unsafe(nil), Array)
1851
+
1852
+ # source://ruby-lsp/lib/ruby_lsp/requests/folding_ranges.rb#53
1853
+ RubyLsp::Requests::FoldingRanges::StatementNode = T.type_alias { T.any(::SyntaxTree::Elsif, ::SyntaxTree::IfNode, ::SyntaxTree::In, ::SyntaxTree::Rescue, ::SyntaxTree::When) }
1854
+
1855
+ # ![Formatting symbol demo](../../formatting.gif)
1856
+ #
1857
+ # The [formatting](https://microsoft.github.io/language-server-protocol/specification#textDocument_formatting)
1858
+ # request uses RuboCop to fix auto-correctable offenses in the document. This requires enabling format on save and
1859
+ # registering the ruby-lsp as the Ruby formatter.
1860
+ #
1861
+ # The `rubyLsp.formatter` setting specifies which formatter to use.
1862
+ # If set to `auto` then it behaves as follows:
1863
+ # * It will use RuboCop if it is part of the bundle.
1864
+ # * If RuboCop is not available, and `syntax_tree` is a direct dependency, it will use that.
1865
+ # * Otherwise, no formatting will be applied.
1866
+ #
1867
+ # # Example
1868
+ #
1869
+ # ```ruby
1870
+ # def say_hello
1871
+ # puts "Hello" # --> formatting: fixes the indentation on save
1872
+ # end
1873
+ # ```
1874
+ #
1875
+ # source://ruby-lsp/lib/ruby_lsp/requests/formatting.rb#28
1876
+ class RubyLsp::Requests::Formatting < ::RubyLsp::Requests::BaseRequest
1877
+ # source://ruby-lsp/lib/ruby_lsp/requests/formatting.rb#58
1878
+ sig { params(document: ::RubyLsp::Document, formatter: ::String).void }
1879
+ def initialize(document, formatter: T.unsafe(nil)); end
1880
+
1881
+ # source://ruby-lsp/lib/ruby_lsp/requests/formatting.rb#66
1882
+ sig { override.returns(T.nilable(T.all(::Object, T::Array[::LanguageServer::Protocol::Interface::TextEdit]))) }
1883
+ def run; end
1884
+
1885
+ private
1886
+
1887
+ # @raise [InvalidFormatter]
1888
+ #
1889
+ # source://ruby-lsp/lib/ruby_lsp/requests/formatting.rb#95
1890
+ sig { returns(T.nilable(::String)) }
1891
+ def formatted_file; end
1892
+
1893
+ class << self
1894
+ # source://ruby-lsp/lib/ruby_lsp/requests/formatting.rb#43
1895
+ sig { returns(T::Hash[::String, ::RubyLsp::Requests::Support::FormatterRunner]) }
1896
+ def formatters; end
1897
+
1898
+ # source://ruby-lsp/lib/ruby_lsp/requests/formatting.rb#46
1899
+ sig { params(identifier: ::String, instance: ::RubyLsp::Requests::Support::FormatterRunner).void }
1900
+ def register_formatter(identifier, instance); end
1901
+ end
1902
+ end
1903
+
1904
+ # source://ruby-lsp/lib/ruby_lsp/requests/formatting.rb#29
1905
+ class RubyLsp::Requests::Formatting::Error < ::StandardError; end
1906
+
1907
+ # source://ruby-lsp/lib/ruby_lsp/requests/formatting.rb#30
1908
+ class RubyLsp::Requests::Formatting::InvalidFormatter < ::StandardError; end
1909
+
1910
+ # ![Hover demo](../../hover.gif)
1911
+ #
1912
+ # The [hover request](https://microsoft.github.io/language-server-protocol/specification#textDocument_hover)
1913
+ # displays the documentation for the symbol currently under the cursor.
1914
+ #
1915
+ # # Example
1916
+ #
1917
+ # ```ruby
1918
+ # String # -> Hovering over the class reference will show all declaration locations and the documentation
1919
+ # ```
1920
+ #
1921
+ # source://ruby-lsp/lib/ruby_lsp/requests/hover.rb#16
1922
+ class RubyLsp::Requests::Hover < ::RubyLsp::ExtensibleListener
1923
+ extend T::Generic
1924
+
1925
+ ResponseType = type_member { { fixed: T.nilable(::LanguageServer::Protocol::Interface::Hover) } }
1926
+
1927
+ # source://ruby-lsp/lib/ruby_lsp/requests/hover.rb#43
1928
+ sig do
1929
+ params(
1930
+ index: ::RubyIndexer::Index,
1931
+ nesting: T::Array[::String],
1932
+ emitter: ::RubyLsp::EventEmitter,
1933
+ message_queue: ::Thread::Queue
1934
+ ).void
1935
+ end
1936
+ def initialize(index, nesting, emitter, message_queue); end
1937
+
1938
+ # source://ruby-lsp/lib/ruby_lsp/requests/hover.rb#33
1939
+ sig { override.returns(ResponseType) }
1940
+ def _response; end
1941
+
1942
+ # source://ruby-lsp/lib/ruby_lsp/requests/hover.rb#53
1943
+ sig { override.params(extension: ::RubyLsp::Extension).returns(T.nilable(RubyLsp::Listener[ResponseType])) }
1944
+ def initialize_external_listener(extension); end
1945
+
1946
+ # Merges responses from other hover listeners
1947
+ #
1948
+ # source://ruby-lsp/lib/ruby_lsp/requests/hover.rb#59
1949
+ sig { override.params(other: RubyLsp::Listener[ResponseType]).returns(T.self_type) }
1950
+ def merge_response!(other); end
1951
+
1952
+ # source://ruby-lsp/lib/ruby_lsp/requests/hover.rb#81
1953
+ sig { params(node: ::SyntaxTree::Const).void }
1954
+ def on_const(node); end
1955
+
1956
+ # source://ruby-lsp/lib/ruby_lsp/requests/hover.rb#73
1957
+ sig { params(node: ::SyntaxTree::ConstPathRef).void }
1958
+ def on_const_path_ref(node); end
1959
+
1960
+ private
1961
+
1962
+ # source://ruby-lsp/lib/ruby_lsp/requests/hover.rb#90
1963
+ sig { params(name: ::String, node: ::SyntaxTree::Node).void }
1964
+ def generate_hover(name, node); end
1965
+ end
1966
+
1967
+ # source://ruby-lsp/lib/ruby_lsp/requests/hover.rb#22
1968
+ RubyLsp::Requests::Hover::ALLOWED_TARGETS = T.let(T.unsafe(nil), Array)
1969
+
1970
+ # ![Inlay hint demo](../../inlay_hints.gif)
1971
+ #
1972
+ # [Inlay hints](https://microsoft.github.io/language-server-protocol/specification#textDocument_inlayHint)
1973
+ # are labels added directly in the code that explicitly show the user something that might
1974
+ # otherwise just be implied.
1975
+ #
1976
+ # # Example
1977
+ #
1978
+ # ```ruby
1979
+ # begin
1980
+ # puts "do something that might raise"
1981
+ # rescue # Label "StandardError" goes here as a bare rescue implies rescuing StandardError
1982
+ # puts "handle some rescue"
1983
+ # end
1984
+ # ```
1985
+ #
1986
+ # source://ruby-lsp/lib/ruby_lsp/requests/inlay_hints.rb#21
1987
+ class RubyLsp::Requests::InlayHints < ::RubyLsp::Listener
1988
+ extend T::Generic
1989
+
1990
+ ResponseType = type_member { { fixed: T::Array[::LanguageServer::Protocol::Interface::InlayHint] } }
1991
+
1992
+ # source://ruby-lsp/lib/ruby_lsp/requests/inlay_hints.rb#33
1993
+ sig { params(range: T::Range[::Integer], emitter: ::RubyLsp::EventEmitter, message_queue: ::Thread::Queue).void }
1994
+ def initialize(range, emitter, message_queue); end
1995
+
1996
+ # source://ruby-lsp/lib/ruby_lsp/requests/inlay_hints.rb#30
1997
+ sig { override.returns(ResponseType) }
1998
+ def _response; end
1999
+
2000
+ # source://ruby-lsp/lib/ruby_lsp/requests/inlay_hints.rb#43
2001
+ sig { params(node: ::SyntaxTree::Rescue).void }
2002
+ def on_rescue(node); end
2003
+ end
2004
+
2005
+ # source://ruby-lsp/lib/ruby_lsp/requests/inlay_hints.rb#27
2006
+ RubyLsp::Requests::InlayHints::RESCUE_STRING_LENGTH = T.let(T.unsafe(nil), Integer)
2007
+
2008
+ # ![On type formatting demo](../../on_type_formatting.gif)
2009
+ #
2010
+ # The [on type formatting](https://microsoft.github.io/language-server-protocol/specification#textDocument_onTypeFormatting)
2011
+ # request formats code as the user is typing. For example, automatically adding `end` to class definitions.
2012
+ #
2013
+ # # Example
2014
+ #
2015
+ # ```ruby
2016
+ # class Foo # <-- upon adding a line break, on type formatting is triggered
2017
+ # # <-- cursor ends up here
2018
+ # end # <-- end is automatically added
2019
+ # ```
2020
+ #
2021
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#18
2022
+ class RubyLsp::Requests::OnTypeFormatting < ::RubyLsp::Requests::BaseRequest
2023
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#30
2024
+ sig do
2025
+ params(
2026
+ document: ::RubyLsp::Document,
2027
+ position: {line: ::Integer, character: ::Integer},
2028
+ trigger_character: ::String
2029
+ ).void
2030
+ end
2031
+ def initialize(document, position, trigger_character); end
2032
+
2033
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#44
2034
+ sig { override.returns(T.all(::Object, T::Array[::LanguageServer::Protocol::Interface::TextEdit])) }
2035
+ def run; end
2036
+
2037
+ private
2038
+
2039
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#131
2040
+ sig { params(text: ::String, position: {line: ::Integer, character: ::Integer}).void }
2041
+ def add_edit_with_text(text, position = T.unsafe(nil)); end
2042
+
2043
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#163
2044
+ sig { params(line: ::String).returns(::Integer) }
2045
+ def find_indentation(line); end
2046
+
2047
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#125
2048
+ sig { params(spaces: ::String).void }
2049
+ def handle_comment_line(spaces); end
2050
+
2051
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#95
2052
+ sig { void }
2053
+ def handle_curly_brace; end
2054
+
2055
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#64
2056
+ sig { void }
2057
+ def handle_pipe; end
2058
+
2059
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#103
2060
+ sig { void }
2061
+ def handle_statement_end; end
2062
+
2063
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#144
2064
+ sig { params(line: ::Integer, character: ::Integer).void }
2065
+ def move_cursor_to(line, character); end
2066
+ end
2067
+
2068
+ # source://ruby-lsp/lib/ruby_lsp/requests/on_type_formatting.rb#21
2069
+ RubyLsp::Requests::OnTypeFormatting::END_REGEXES = T.let(T.unsafe(nil), Array)
2070
+
2071
+ # ![Selection ranges demo](../../selection_ranges.gif)
2072
+ #
2073
+ # The [selection ranges](https://microsoft.github.io/language-server-protocol/specification#textDocument_selectionRange)
2074
+ # request informs the editor of ranges that the user may want to select based on the location(s)
2075
+ # of their cursor(s).
2076
+ #
2077
+ # Trigger this request with: Ctrl + Shift + -> or Ctrl + Shift + <-
2078
+ #
2079
+ # Note that if using VSCode Neovim, you will need to be in Insert mode for this to work correctly.
2080
+ #
2081
+ # # Example
2082
+ #
2083
+ # ```ruby
2084
+ # def foo # --> The next selection range encompasses the entire method definition.
2085
+ # puts "Hello, world!" # --> Cursor is on this line
2086
+ # end
2087
+ # ```
2088
+ #
2089
+ # source://ruby-lsp/lib/ruby_lsp/requests/selection_ranges.rb#23
2090
+ class RubyLsp::Requests::SelectionRanges < ::RubyLsp::Requests::BaseRequest
2091
+ # source://ruby-lsp/lib/ruby_lsp/requests/selection_ranges.rb#66
2092
+ sig { params(document: ::RubyLsp::Document).void }
2093
+ def initialize(document); end
2094
+
2095
+ # source://ruby-lsp/lib/ruby_lsp/requests/selection_ranges.rb#74
2096
+ sig { override.returns(T.all(::Object, T::Array[::RubyLsp::Requests::Support::SelectionRange])) }
2097
+ def run; end
2098
+
2099
+ private
2100
+
2101
+ # source://ruby-lsp/lib/ruby_lsp/requests/selection_ranges.rb#101
2102
+ sig do
2103
+ params(
2104
+ location: ::SyntaxTree::Location,
2105
+ parent: T.nilable(::RubyLsp::Requests::Support::SelectionRange)
2106
+ ).returns(::RubyLsp::Requests::Support::SelectionRange)
2107
+ end
2108
+ def create_selection_range(location, parent = T.unsafe(nil)); end
2109
+
2110
+ # source://ruby-lsp/lib/ruby_lsp/requests/selection_ranges.rb#82
2111
+ sig { override.params(node: T.nilable(::SyntaxTree::Node)).void }
2112
+ def visit(node); end
2113
+ end
2114
+
2115
+ # source://ruby-lsp/lib/ruby_lsp/requests/selection_ranges.rb#26
2116
+ RubyLsp::Requests::SelectionRanges::NODES_THAT_CAN_BE_PARENTS = T.let(T.unsafe(nil), Array)
2117
+
2118
+ # ![Semantic highlighting demo](../../semantic_highlighting.gif)
2119
+ #
2120
+ # The [semantic
2121
+ # highlighting](https://microsoft.github.io/language-server-protocol/specification#textDocument_semanticTokens)
2122
+ # request informs the editor of the correct token types to provide consistent and accurate highlighting for themes.
2123
+ #
2124
+ # # Example
2125
+ #
2126
+ # ```ruby
2127
+ # def foo
2128
+ # var = 1 # --> semantic highlighting: local variable
2129
+ # some_invocation # --> semantic highlighting: method invocation
2130
+ # var # --> semantic highlighting: local variable
2131
+ # end
2132
+ # ```
2133
+ #
2134
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#21
2135
+ class RubyLsp::Requests::SemanticHighlighting < ::RubyLsp::Listener
2136
+ extend T::Generic
2137
+
2138
+ ResponseType = type_member { { fixed: T::Array[::RubyLsp::Requests::SemanticHighlighting::SemanticToken] } }
2139
+
2140
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#117
2141
+ sig do
2142
+ params(
2143
+ emitter: ::RubyLsp::EventEmitter,
2144
+ message_queue: ::Thread::Queue,
2145
+ range: T.nilable(T::Range[::Integer])
2146
+ ).void
2147
+ end
2148
+ def initialize(emitter, message_queue, range: T.unsafe(nil)); end
2149
+
2150
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#108
2151
+ sig { override.returns(ResponseType) }
2152
+ def _response; end
2153
+
2154
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#327
2155
+ sig { params(location: ::SyntaxTree::Location, type: ::Symbol, modifiers: T::Array[::Symbol]).void }
2156
+ def add_token(location, type, modifiers = T.unsafe(nil)); end
2157
+
2158
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#286
2159
+ sig { params(node: ::SyntaxTree::Binary).void }
2160
+ def after_binary(node); end
2161
+
2162
+ # All block locals are variables. E.g.: [].each do |x; block_local|
2163
+ #
2164
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#254
2165
+ sig { params(node: ::SyntaxTree::BlockVar).void }
2166
+ def on_block_var(node); end
2167
+
2168
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#146
2169
+ sig { params(node: ::SyntaxTree::CallNode).void }
2170
+ def on_call(node); end
2171
+
2172
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#310
2173
+ sig { params(node: ::SyntaxTree::ClassDeclaration).void }
2174
+ def on_class(node); end
2175
+
2176
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#157
2177
+ sig { params(node: ::SyntaxTree::Command).void }
2178
+ def on_command(node); end
2179
+
2180
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#164
2181
+ sig { params(node: ::SyntaxTree::CommandCall).void }
2182
+ def on_command_call(node); end
2183
+
2184
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#172
2185
+ sig { params(node: ::SyntaxTree::Const).void }
2186
+ def on_const(node); end
2187
+
2188
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#183
2189
+ sig { params(node: ::SyntaxTree::DefNode).void }
2190
+ def on_def(node); end
2191
+
2192
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#220
2193
+ sig { params(node: ::SyntaxTree::Field).void }
2194
+ def on_field(node); end
2195
+
2196
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#190
2197
+ sig { params(node: ::SyntaxTree::Kw).void }
2198
+ def on_kw(node); end
2199
+
2200
+ # All lambda locals are variables. E.g.: ->(x; lambda_local) {}
2201
+ #
2202
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#260
2203
+ sig { params(node: ::SyntaxTree::LambdaVar).void }
2204
+ def on_lambda_var(node); end
2205
+
2206
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#320
2207
+ sig { params(node: ::SyntaxTree::ModuleDeclaration).void }
2208
+ def on_module(node); end
2209
+
2210
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#200
2211
+ sig { params(node: ::SyntaxTree::Params).void }
2212
+ def on_params(node); end
2213
+
2214
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#227
2215
+ sig { params(node: ::SyntaxTree::VarField).void }
2216
+ def on_var_field(node); end
2217
+
2218
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#240
2219
+ sig { params(node: ::SyntaxTree::VarRef).void }
2220
+ def on_var_ref(node); end
2221
+
2222
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#265
2223
+ sig { params(node: ::SyntaxTree::VCall).void }
2224
+ def on_vcall(node); end
2225
+
2226
+ private
2227
+
2228
+ # Exclude the ":" symbol at the end of a location
2229
+ # We use it on keyword parameters to be consistent
2230
+ # with the rest of the parameters
2231
+ #
2232
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#346
2233
+ sig { params(location: T.untyped).returns(::SyntaxTree::Location) }
2234
+ def location_without_colon(location); end
2235
+
2236
+ # Textmate provides highlighting for a subset
2237
+ # of these special Ruby-specific methods.
2238
+ # We want to utilize that highlighting, so we
2239
+ # avoid making a semantic token for it.
2240
+ #
2241
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#362
2242
+ sig { params(method_name: ::String).returns(T::Boolean) }
2243
+ def special_method?(method_name); end
2244
+
2245
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#367
2246
+ sig { params(value: ::SyntaxTree::Ident).returns(::Symbol) }
2247
+ def type_for_local(value); end
2248
+ end
2249
+
2250
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#72
2251
+ RubyLsp::Requests::SemanticHighlighting::SPECIAL_RUBY_METHODS = T.let(T.unsafe(nil), Array)
2252
+
2253
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#83
2254
+ class RubyLsp::Requests::SemanticHighlighting::SemanticToken
2255
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#99
2256
+ sig do
2257
+ params(
2258
+ location: ::SyntaxTree::Location,
2259
+ length: ::Integer,
2260
+ type: ::Integer,
2261
+ modifier: T::Array[::Integer]
2262
+ ).void
2263
+ end
2264
+ def initialize(location:, length:, type:, modifier:); end
2265
+
2266
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#90
2267
+ sig { returns(::Integer) }
2268
+ def length; end
2269
+
2270
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#87
2271
+ sig { returns(::SyntaxTree::Location) }
2272
+ def location; end
2273
+
2274
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#96
2275
+ sig { returns(T::Array[::Integer]) }
2276
+ def modifier; end
2277
+
2278
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#93
2279
+ sig { returns(::Integer) }
2280
+ def type; end
2281
+ end
2282
+
2283
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#56
2284
+ RubyLsp::Requests::SemanticHighlighting::TOKEN_MODIFIERS = T.let(T.unsafe(nil), Hash)
2285
+
2286
+ # source://ruby-lsp/lib/ruby_lsp/requests/semantic_highlighting.rb#27
2287
+ RubyLsp::Requests::SemanticHighlighting::TOKEN_TYPES = T.let(T.unsafe(nil), Hash)
2288
+
2289
+ # ![Show syntax tree demo](../../show_syntax_tree.gif)
2290
+ #
2291
+ # Show syntax tree is a custom [LSP
2292
+ # request](https://microsoft.github.io/language-server-protocol/specification#requestMessage) that displays the AST
2293
+ # for the current document or for the current selection in a new tab.
2294
+ #
2295
+ # # Example
2296
+ #
2297
+ # ```ruby
2298
+ # # Executing the Ruby LSP: Show syntax tree command will display the AST for the document
2299
+ # 1 + 1
2300
+ # # (program (statements ((binary (int "1") + (int "1")))))
2301
+ # ```
2302
+ #
2303
+ # source://ruby-lsp/lib/ruby_lsp/requests/show_syntax_tree.rb#20
2304
+ class RubyLsp::Requests::ShowSyntaxTree < ::RubyLsp::Requests::BaseRequest
2305
+ # source://ruby-lsp/lib/ruby_lsp/requests/show_syntax_tree.rb#24
2306
+ sig do
2307
+ params(
2308
+ document: ::RubyLsp::Document,
2309
+ range: T.nilable({start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}})
2310
+ ).void
2311
+ end
2312
+ def initialize(document, range); end
2313
+
2314
+ # source://ruby-lsp/lib/ruby_lsp/requests/show_syntax_tree.rb#31
2315
+ sig { override.returns(::String) }
2316
+ def run; end
2317
+
2318
+ private
2319
+
2320
+ # source://ruby-lsp/lib/ruby_lsp/requests/show_syntax_tree.rb#43
2321
+ sig { returns(::String) }
2322
+ def ast_for_range; end
2323
+ end
2324
+
2325
+ # source://ruby-lsp/lib/ruby_lsp/requests.rb#48
2326
+ module RubyLsp::Requests::Support; end
2327
+
2328
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/annotation.rb#7
2329
+ class RubyLsp::Requests::Support::Annotation
2330
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/annotation.rb#15
2331
+ sig { params(arity: T.any(::Integer, T::Range[::Integer]), receiver: T::Boolean).void }
2332
+ def initialize(arity:, receiver: T.unsafe(nil)); end
2333
+
2334
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/annotation.rb#21
2335
+ sig { returns(T.any(::Integer, T::Range[::Integer])) }
2336
+ def arity; end
2337
+
2338
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/annotation.rb#24
2339
+ sig { returns(T::Boolean) }
2340
+ def receiver; end
2341
+
2342
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/annotation.rb#27
2343
+ sig { params(arity: T.any(::Integer, T::Range[::Integer])).returns(T::Boolean) }
2344
+ def supports_arity?(arity); end
2345
+
2346
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/annotation.rb#38
2347
+ sig { params(receiver: T.nilable(::String)).returns(T::Boolean) }
2348
+ def supports_receiver?(receiver); end
2349
+ end
2350
+
2351
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/common.rb#7
2352
+ module RubyLsp::Requests::Support::Common
2353
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/common.rb#64
2354
+ sig do
2355
+ params(
2356
+ node: ::SyntaxTree::Node,
2357
+ title: ::String,
2358
+ command_name: ::String,
2359
+ arguments: T.nilable(T::Array[T.untyped]),
2360
+ data: T.nilable(T::Hash[T.untyped, T.untyped])
2361
+ ).returns(::LanguageServer::Protocol::Interface::CodeLens)
2362
+ end
2363
+ def create_code_lens(node, title:, command_name:, arguments:, data:); end
2364
+
2365
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/common.rb#28
2366
+ sig do
2367
+ params(
2368
+ node: T.any(::SyntaxTree::ConstPathRef, ::SyntaxTree::ConstRef, ::SyntaxTree::TopConstRef)
2369
+ ).returns(::String)
2370
+ end
2371
+ def full_constant_name(node); end
2372
+
2373
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/common.rb#79
2374
+ sig do
2375
+ params(
2376
+ title: ::String,
2377
+ entries: T::Array[::RubyIndexer::Index::Entry]
2378
+ ).returns(::LanguageServer::Protocol::Interface::MarkupContent)
2379
+ end
2380
+ def markdown_from_index_entries(title, entries); end
2381
+
2382
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/common.rb#13
2383
+ sig { params(node: ::SyntaxTree::Node).returns(::LanguageServer::Protocol::Interface::Range) }
2384
+ def range_from_syntax_tree_node(node); end
2385
+
2386
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/common.rb#47
2387
+ sig { params(node: T.nilable(::SyntaxTree::Node), range: T.nilable(T::Range[::Integer])).returns(T::Boolean) }
2388
+ def visible?(node, range); end
2389
+ end
2390
+
2391
+ # @abstract Subclasses must implement the `abstract` methods below.
2392
+ #
2393
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/formatter_runner.rb#7
2394
+ module RubyLsp::Requests::Support::FormatterRunner
2395
+ interface!
2396
+
2397
+ # @abstract
2398
+ #
2399
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/formatter_runner.rb#14
2400
+ sig { abstract.params(uri: ::URI::Generic, document: ::RubyLsp::Document).returns(T.nilable(::String)) }
2401
+ def run(uri, document); end
2402
+ end
2403
+
2404
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#7
2405
+ class RubyLsp::Requests::Support::HighlightTarget
2406
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#30
2407
+ sig { params(node: ::SyntaxTree::Node).void }
2408
+ def initialize(node); end
2409
+
2410
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#36
2411
+ sig do
2412
+ params(
2413
+ other: ::SyntaxTree::Node
2414
+ ).returns(T.nilable(::RubyLsp::Requests::Support::HighlightTarget::HighlightMatch))
2415
+ end
2416
+ def highlight_type(other); end
2417
+
2418
+ private
2419
+
2420
+ # Match the target type (where the cursor is positioned) with the `other` type (the node we're currently
2421
+ # visiting)
2422
+ #
2423
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#45
2424
+ sig do
2425
+ params(
2426
+ other: ::SyntaxTree::Node
2427
+ ).returns(T.nilable(::RubyLsp::Requests::Support::HighlightTarget::HighlightMatch))
2428
+ end
2429
+ def matched_highlight(other); end
2430
+
2431
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#77
2432
+ sig { params(node: ::SyntaxTree::Node).returns(T.nilable(::String)) }
2433
+ def value(node); end
2434
+ end
2435
+
2436
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#13
2437
+ class RubyLsp::Requests::Support::HighlightTarget::HighlightMatch
2438
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#23
2439
+ sig { params(type: ::Integer, node: ::SyntaxTree::Node).void }
2440
+ def initialize(type:, node:); end
2441
+
2442
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#20
2443
+ sig { returns(::SyntaxTree::Node) }
2444
+ def node; end
2445
+
2446
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#17
2447
+ sig { returns(::Integer) }
2448
+ def type; end
2449
+ end
2450
+
2451
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#10
2452
+ RubyLsp::Requests::Support::HighlightTarget::READ = T.let(T.unsafe(nil), Integer)
2453
+
2454
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/highlight_target.rb#11
2455
+ RubyLsp::Requests::Support::HighlightTarget::WRITE = T.let(T.unsafe(nil), Integer)
2456
+
2457
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#19
2458
+ class RubyLsp::Requests::Support::InternalRuboCopError < ::StandardError
2459
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#29
2460
+ sig { params(rubocop_error: ::RuboCop::ErrorWithAnalyzedFileLocation).void }
2461
+ def initialize(rubocop_error); end
2462
+ end
2463
+
2464
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#22
2465
+ RubyLsp::Requests::Support::InternalRuboCopError::MESSAGE = T.let(T.unsafe(nil), String)
2466
+
2467
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb#7
2468
+ class RubyLsp::Requests::Support::RuboCopDiagnostic
2469
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb#23
2470
+ sig { params(offense: ::RuboCop::Cop::Offense, uri: ::URI::Generic).void }
2471
+ def initialize(offense, uri); end
2472
+
2473
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb#29
2474
+ sig { returns(::LanguageServer::Protocol::Interface::CodeAction) }
2475
+ def to_lsp_code_action; end
2476
+
2477
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb#49
2478
+ sig { returns(::LanguageServer::Protocol::Interface::Diagnostic) }
2479
+ def to_lsp_diagnostic; end
2480
+
2481
+ private
2482
+
2483
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb#83
2484
+ sig { returns(T::Array[::LanguageServer::Protocol::Interface::TextEdit]) }
2485
+ def offense_replacements; end
2486
+ end
2487
+
2488
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb#10
2489
+ RubyLsp::Requests::Support::RuboCopDiagnostic::RUBOCOP_TO_LSP_SEVERITY = T.let(T.unsafe(nil), Hash)
2490
+
2491
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_diagnostics_runner.rb#12
2492
+ class RubyLsp::Requests::Support::RuboCopDiagnosticsRunner
2493
+ include ::Singleton
2494
+ extend ::Singleton::SingletonClassMethods
2495
+
2496
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_diagnostics_runner.rb#17
2497
+ sig { void }
2498
+ def initialize; end
2499
+
2500
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_diagnostics_runner.rb#22
2501
+ sig do
2502
+ params(
2503
+ uri: ::URI::Generic,
2504
+ document: ::RubyLsp::Document
2505
+ ).returns(T::Array[::RubyLsp::Requests::Support::RuboCopDiagnostic])
2506
+ end
2507
+ def run(uri, document); end
2508
+
2509
+ class << self
2510
+ private
2511
+
2512
+ def allocate; end
2513
+ def new(*_arg0); end
2514
+ end
2515
+ end
2516
+
2517
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_formatting_runner.rb#12
2518
+ class RubyLsp::Requests::Support::RuboCopFormattingRunner
2519
+ include ::Singleton
2520
+ include ::RubyLsp::Requests::Support::FormatterRunner
2521
+ extend ::Singleton::SingletonClassMethods
2522
+
2523
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_formatting_runner.rb#18
2524
+ sig { void }
2525
+ def initialize; end
2526
+
2527
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_formatting_runner.rb#24
2528
+ sig { override.params(uri: ::URI::Generic, document: ::RubyLsp::Document).returns(::String) }
2529
+ def run(uri, document); end
2530
+
2531
+ class << self
2532
+ private
2533
+
2534
+ def allocate; end
2535
+ def new(*_arg0); end
2536
+ end
2537
+ end
2538
+
2539
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#36
2540
+ class RubyLsp::Requests::Support::RuboCopRunner < ::RuboCop::Runner
2541
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#63
2542
+ sig { params(args: ::String).void }
2543
+ def initialize(*args); end
2544
+
2545
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#95
2546
+ sig { returns(::String) }
2547
+ def formatted_source; end
2548
+
2549
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#42
2550
+ sig { returns(T::Array[::RuboCop::Cop::Offense]) }
2551
+ def offenses; end
2552
+
2553
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#77
2554
+ sig { params(path: ::String, contents: ::String).void }
2555
+ def run(path, contents); end
2556
+
2557
+ private
2558
+
2559
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#102
2560
+ sig { params(_file: ::String, offenses: T::Array[::RuboCop::Cop::Offense]).void }
2561
+ def file_finished(_file, offenses); end
2562
+ end
2563
+
2564
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#39
2565
+ class RubyLsp::Requests::Support::RuboCopRunner::ConfigurationError < ::StandardError; end
2566
+
2567
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/rubocop_runner.rb#44
2568
+ RubyLsp::Requests::Support::RuboCopRunner::DEFAULT_ARGS = T.let(T.unsafe(nil), Array)
2569
+
2570
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/selection_range.rb#7
2571
+ class RubyLsp::Requests::Support::SelectionRange < ::LanguageServer::Protocol::Interface::SelectionRange
2572
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/selection_range.rb#11
2573
+ sig { params(position: {line: ::Integer, character: ::Integer}).returns(T::Boolean) }
2574
+ def cover?(position); end
2575
+ end
2576
+
2577
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/semantic_token_encoder.rb#7
2578
+ class RubyLsp::Requests::Support::SemanticTokenEncoder
2579
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/semantic_token_encoder.rb#11
2580
+ sig { void }
2581
+ def initialize; end
2582
+
2583
+ # For more information on how each number is calculated, read:
2584
+ # https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_semanticTokens
2585
+ #
2586
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/semantic_token_encoder.rb#43
2587
+ sig { params(token: ::RubyLsp::Requests::SemanticHighlighting::SemanticToken).returns(T::Array[::Integer]) }
2588
+ def compute_delta(token); end
2589
+
2590
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/semantic_token_encoder.rb#21
2591
+ sig do
2592
+ params(
2593
+ tokens: T::Array[::RubyLsp::Requests::SemanticHighlighting::SemanticToken]
2594
+ ).returns(::LanguageServer::Protocol::Interface::SemanticTokens)
2595
+ end
2596
+ def encode(tokens); end
2597
+
2598
+ # Encode an array of modifiers to positions onto a bit flag
2599
+ # For example, [:default_library] will be encoded as
2600
+ # 0b1000000000, as :default_library is the 10th bit according
2601
+ # to the token modifiers index map.
2602
+ #
2603
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/semantic_token_encoder.rb#62
2604
+ sig { params(modifiers: T::Array[::Integer]).returns(::Integer) }
2605
+ def encode_modifiers(modifiers); end
2606
+ end
2607
+
2608
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/sorbet.rb#7
2609
+ class RubyLsp::Requests::Support::Sorbet
2610
+ class << self
2611
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/sorbet.rb#48
2612
+ sig { params(node: T.any(::SyntaxTree::CallNode, ::SyntaxTree::VCall)).returns(T::Boolean) }
2613
+ def annotation?(node); end
2614
+
2615
+ private
2616
+
2617
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/sorbet.rb#61
2618
+ sig do
2619
+ params(
2620
+ node: T.any(::SyntaxTree::CallNode, ::SyntaxTree::VCall)
2621
+ ).returns(T.nilable(::RubyLsp::Requests::Support::Annotation))
2622
+ end
2623
+ def annotation(node); end
2624
+
2625
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/sorbet.rb#90
2626
+ sig { params(node: T.nilable(::SyntaxTree::Node)).returns(T.nilable(::String)) }
2627
+ def node_name(node); end
2628
+
2629
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/sorbet.rb#76
2630
+ sig { params(receiver: T.any(::SyntaxTree::CallNode, ::SyntaxTree::VCall)).returns(T.nilable(::String)) }
2631
+ def receiver_name(receiver); end
2632
+ end
2633
+ end
2634
+
2635
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/syntax_tree_formatting_runner.rb#11
2636
+ class RubyLsp::Requests::Support::SyntaxTreeFormattingRunner
2637
+ include ::Singleton
2638
+ include ::RubyLsp::Requests::Support::FormatterRunner
2639
+ extend ::Singleton::SingletonClassMethods
2640
+
2641
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/syntax_tree_formatting_runner.rb#17
2642
+ sig { void }
2643
+ def initialize; end
2644
+
2645
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/syntax_tree_formatting_runner.rb#30
2646
+ sig { override.params(uri: ::URI::Generic, document: ::RubyLsp::Document).returns(T.nilable(::String)) }
2647
+ def run(uri, document); end
2648
+
2649
+ class << self
2650
+ private
2651
+
2652
+ def allocate; end
2653
+ def new(*_arg0); end
2654
+ end
2655
+ end
2656
+
2657
+ # ![Workspace symbol demo](../../workspace_symbol.gif)
2658
+ #
2659
+ # The [workspace symbol](https://microsoft.github.io/language-server-protocol/specification#workspace_symbol)
2660
+ # request allows fuzzy searching declarations in the entire project. On VS Code, use CTRL/CMD + T to search for
2661
+ # symbols.
2662
+ #
2663
+ # # Example
2664
+ #
2665
+ # ```ruby
2666
+ # # Searching for `Floo` will fuzzy match and return all declarations according to the query, including this `Foo`
2667
+ # class
2668
+ # class Foo
2669
+ # end
2670
+ # ```
2671
+ #
2672
+ # source://ruby-lsp/lib/ruby_lsp/requests/workspace_symbol.rb#21
2673
+ class RubyLsp::Requests::WorkspaceSymbol
2674
+ # source://ruby-lsp/lib/ruby_lsp/requests/workspace_symbol.rb#25
2675
+ sig { params(query: T.nilable(::String), index: ::RubyIndexer::Index).void }
2676
+ def initialize(query, index); end
2677
+
2678
+ # source://ruby-lsp/lib/ruby_lsp/requests/workspace_symbol.rb#31
2679
+ sig { returns(T::Array[::LanguageServer::Protocol::Interface::WorkspaceSymbol]) }
2680
+ def run; end
2681
+
2682
+ private
2683
+
2684
+ # source://ruby-lsp/lib/ruby_lsp/requests/workspace_symbol.rb#74
2685
+ sig { params(entry: ::RubyIndexer::Index::Entry).returns(T.nilable(::Integer)) }
2686
+ def kind_for_entry(entry); end
2687
+ end
2688
+
2689
+ # The final result of running a request before its IO is finalized
2690
+ #
2691
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#35
2692
+ class RubyLsp::Result
2693
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#54
2694
+ sig { params(response: T.untyped, error: T.nilable(::Exception), request_time: T.nilable(::Float)).void }
2695
+ def initialize(response:, error: T.unsafe(nil), request_time: T.unsafe(nil)); end
2696
+
2697
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#42
2698
+ sig { returns(T.nilable(::Exception)) }
2699
+ def error; end
2700
+
2701
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#45
2702
+ sig { returns(T.nilable(::Float)) }
2703
+ def request_time; end
2704
+
2705
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#39
2706
+ sig { returns(T.untyped) }
2707
+ def response; end
2708
+ end
2709
+
2710
+ # source://ruby-lsp/lib/ruby_lsp/server.rb#11
2711
+ class RubyLsp::Server
2712
+ # source://ruby-lsp/lib/ruby_lsp/server.rb#15
2713
+ sig { void }
2714
+ def initialize; end
2715
+
2716
+ # source://ruby-lsp/lib/ruby_lsp/server.rb#60
2717
+ sig { void }
2718
+ def start; end
2719
+
2720
+ private
2721
+
2722
+ # Finalize a Queue::Result. All IO operations should happen here to avoid any issues with cancelling requests
2723
+ #
2724
+ # source://ruby-lsp/lib/ruby_lsp/server.rb#145
2725
+ sig { params(result: ::RubyLsp::Result, request: T::Hash[::Symbol, T.untyped]).void }
2726
+ def finalize_request(result, request); end
2727
+
2728
+ # source://ruby-lsp/lib/ruby_lsp/server.rb#120
2729
+ sig { returns(::Thread) }
2730
+ def new_worker; end
2731
+
2732
+ # source://ruby-lsp/lib/ruby_lsp/server.rb#177
2733
+ sig do
2734
+ params(
2735
+ request: T::Hash[::Symbol, T.untyped],
2736
+ request_time: ::Float,
2737
+ error: T.nilable(::Exception)
2738
+ ).returns(T::Hash[::Symbol, T.any(::Float, ::String)])
2739
+ end
2740
+ def telemetry_params(request, request_time, error); end
2741
+ end
2742
+
2743
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#7
2744
+ class RubyLsp::Store
2745
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#23
2746
+ sig { void }
2747
+ def initialize; end
2748
+
2749
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#75
2750
+ sig do
2751
+ type_parameters(:T)
2752
+ .params(
2753
+ uri: ::URI::Generic,
2754
+ request_name: ::String,
2755
+ block: T.proc.params(document: ::RubyLsp::Document).returns(T.type_parameter(:T))
2756
+ ).returns(T.type_parameter(:T))
2757
+ end
2758
+ def cache_fetch(uri, request_name, &block); end
2759
+
2760
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#53
2761
+ sig { void }
2762
+ def clear; end
2763
+
2764
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#63
2765
+ sig { params(uri: ::URI::Generic).void }
2766
+ def delete(uri); end
2767
+
2768
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#58
2769
+ sig { returns(T::Boolean) }
2770
+ def empty?; end
2771
+
2772
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#11
2773
+ sig { returns(::String) }
2774
+ def encoding; end
2775
+
2776
+ # @return [String]
2777
+ #
2778
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#11
2779
+ def encoding=(_arg0); end
2780
+
2781
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#20
2782
+ sig { returns(T::Boolean) }
2783
+ def experimental_features; end
2784
+
2785
+ # @return [Boolean]
2786
+ #
2787
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#20
2788
+ def experimental_features=(_arg0); end
2789
+
2790
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#14
2791
+ sig { returns(::String) }
2792
+ def formatter; end
2793
+
2794
+ # @return [String]
2795
+ #
2796
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#14
2797
+ def formatter=(_arg0); end
2798
+
2799
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#32
2800
+ sig { params(uri: ::URI::Generic).returns(::RubyLsp::Document) }
2801
+ def get(uri); end
2802
+
2803
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#48
2804
+ sig do
2805
+ params(
2806
+ uri: ::URI::Generic,
2807
+ edits: T::Array[{range: {start: {line: ::Integer, character: ::Integer}, end: {line: ::Integer, character: ::Integer}}, text: ::String}],
2808
+ version: ::Integer
2809
+ ).void
2810
+ end
2811
+ def push_edits(uri:, edits:, version:); end
2812
+
2813
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#42
2814
+ sig { params(uri: ::URI::Generic, source: ::String, version: ::Integer).void }
2815
+ def set(uri:, source:, version:); end
2816
+
2817
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#17
2818
+ sig { returns(T::Boolean) }
2819
+ def supports_progress; end
2820
+
2821
+ # @return [Boolean]
2822
+ #
2823
+ # source://ruby-lsp/lib/ruby_lsp/store.rb#17
2824
+ def supports_progress=(_arg0); end
2825
+ end
2826
+
2827
+ # source://ruby-lsp/lib/ruby_lsp/server.rb#8
2828
+ RubyLsp::Transport = LanguageServer::Protocol::Transport
2829
+
2830
+ # source://ruby-lsp/lib/ruby-lsp.rb#5
2831
+ RubyLsp::VERSION = T.let(T.unsafe(nil), String)
2832
+
2833
+ # Used to indicate that a request shouldn't return a response
2834
+ #
2835
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#6
2836
+ RubyLsp::VOID = T.let(T.unsafe(nil), Object)
2837
+
2838
+ # This freeze is not redundant since the interpolated string is mutable
2839
+ #
2840
+ # source://ruby-lsp/lib/ruby_lsp/utils.rb#9
2841
+ RubyLsp::WORKSPACE_URI = T.let(T.unsafe(nil), URI::Generic)
2842
+
2843
+ # source://ruby-lsp/lib/core_ext/uri.rb#4
2844
+ module URI
2845
+ include ::URI::RFC2396_REGEXP
2846
+ end
2847
+
2848
+ # source://ruby-lsp/lib/core_ext/uri.rb#5
2849
+ class URI::Generic
2850
+ include ::URI::RFC2396_REGEXP
2851
+ include ::URI
2852
+
2853
+ class << self
2854
+ # source://ruby-lsp/lib/core_ext/uri.rb#10
2855
+ sig { params(path: ::String, fragment: T.nilable(::String), scheme: ::String).returns(::URI::Generic) }
2856
+ def from_path(path:, fragment: T.unsafe(nil), scheme: T.unsafe(nil)); end
2857
+ end
2858
+ end
2859
+
2860
+ # Must be kept in sync with the one in Tapioca
2861
+ #
2862
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/source_uri.rb#8
2863
+ class URI::Source < ::URI::File
2864
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/source_uri.rb#62
2865
+ sig { params(v: T.nilable(::String)).returns(T::Boolean) }
2866
+ def check_host(v); end
2867
+
2868
+ # source://uri/0.12.1uri/generic.rb#243
2869
+ def gem_name; end
2870
+
2871
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/source_uri.rb#26
2872
+ sig { returns(T.nilable(::String)) }
2873
+ def gem_version; end
2874
+
2875
+ # source://uri/0.12.1uri/generic.rb#283
2876
+ def line_number; end
2877
+
2878
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/source_uri.rb#52
2879
+ sig { params(v: T.nilable(::String)).void }
2880
+ def set_path(v); end
2881
+
2882
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/source_uri.rb#74
2883
+ sig { returns(::String) }
2884
+ def to_s; end
2885
+
2886
+ class << self
2887
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/source_uri.rb#39
2888
+ sig do
2889
+ params(
2890
+ gem_name: ::String,
2891
+ gem_version: T.nilable(::String),
2892
+ path: ::String,
2893
+ line_number: T.nilable(::String)
2894
+ ).returns(::URI::Source)
2895
+ end
2896
+ def build(gem_name:, gem_version:, path:, line_number:); end
2897
+ end
2898
+ end
2899
+
2900
+ # source://ruby-lsp/lib/ruby_lsp/requests/support/source_uri.rb#11
2901
+ URI::Source::COMPONENT = T.let(T.unsafe(nil), Array)
2902
+
2903
+ class URI::WSS < ::URI::WS; end