Class: RubyLsp::Requests::FoldingRanges

Inherits:
Request
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/ruby_lsp/requests/folding_ranges.rb

Overview

![Folding ranges demo](../../folding_ranges.gif)

The [folding ranges](microsoft.github.io/language-server-protocol/specification#textDocument_foldingRange) request informs the editor of the ranges where and how code can be folded.

# Example

“‘ruby def say_hello # <– folding range start

puts "Hello"

end # <– folding range end “‘

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(comments, dispatcher) ⇒ FoldingRanges

Returns a new instance of FoldingRanges.



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ruby_lsp/requests/folding_ranges.rb', line 37

def initialize(comments, dispatcher)
  super()
  @response_builder = T.let(
    ResponseBuilders::CollectionResponseBuilder[Interface::FoldingRange].new,
    ResponseBuilders::CollectionResponseBuilder[Interface::FoldingRange],
  )
  @listener = T.let(
    Listeners::FoldingRanges.new(@response_builder, comments, dispatcher),
    Listeners::FoldingRanges,
  )
end

Class Method Details

.providerObject



27
28
29
30
31
32
33
# File 'lib/ruby_lsp/requests/folding_ranges.rb', line 27

def provider
  Interface::FoldingRangeRegistrationOptions.new(
    document_selector: [
      Interface::DocumentFilter.new(language: "ruby"),
    ],
  )
end

Instance Method Details

#performObject



50
51
52
53
# File 'lib/ruby_lsp/requests/folding_ranges.rb', line 50

def perform
  @listener.finalize_response!
  @response_builder.response
end