Sha256: fa0061ee1f6cee1f63a2d73c3afd5cb73a10ad56f4bbd7c39d1fdbc0794088e1
Contents?: true
Size: 1.5 KB
Versions: 26
Compression:
Stored size: 1.5 KB
Contents
# typed: strict # frozen_string_literal: true require "ruby_lsp/listeners/folding_ranges" module RubyLsp module Requests # ![Folding ranges demo](../../folding_ranges.gif) # # The [folding ranges](https://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 FoldingRanges < Request extend T::Sig class << self extend T::Sig sig { returns(Interface::FoldingRangeClientCapabilities) } def provider Interface::FoldingRangeClientCapabilities.new(line_folding_only: true) end end sig { params(comments: T::Array[Prism::Comment], dispatcher: Prism::Dispatcher).void } 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 sig { override.returns(T::Array[Interface::FoldingRange]) } def perform @listener.finalize_response! @response_builder.response end end end end
Version data entries
26 entries across 26 versions & 1 rubygems