Class: RubyLsp::Requests::FoldingRanges
- Inherits:
-
BaseRequest
- Object
- SyntaxTree::Visitor
- BaseRequest
- RubyLsp::Requests::FoldingRanges
- Extended by:
- T::Sig
- Defined in:
- lib/ruby_lsp/requests/folding_ranges.rb
Overview
![Folding ranges demo](../../misc/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 “‘
Defined Under Namespace
Classes: PartialRange
Constant Summary collapse
- SIMPLE_FOLDABLES =
T.let( [ SyntaxTree::ArrayLiteral, SyntaxTree::BlockNode, SyntaxTree::Case, SyntaxTree::ClassDeclaration, SyntaxTree::Command, SyntaxTree::For, SyntaxTree::HashLiteral, SyntaxTree::Heredoc, SyntaxTree::IfNode, SyntaxTree::ModuleDeclaration, SyntaxTree::SClass, SyntaxTree::UnlessNode, SyntaxTree::UntilNode, SyntaxTree::WhileNode, SyntaxTree::Else, SyntaxTree::Ensure, SyntaxTree::Begin, ].freeze, T::Array[T.class_of(SyntaxTree::Node)], )
- NODES_WITH_STATEMENTS =
T.let( [ SyntaxTree::Elsif, SyntaxTree::In, SyntaxTree::Rescue, SyntaxTree::When, ].freeze, T::Array[T.class_of(SyntaxTree::Node)], )
- StatementNode =
T.type_alias do T.any( SyntaxTree::Elsif, SyntaxTree::In, SyntaxTree::Rescue, SyntaxTree::When, ) end
Instance Method Summary collapse
-
#initialize(document) ⇒ FoldingRanges
constructor
A new instance of FoldingRanges.
- #run ⇒ Object
Methods inherited from BaseRequest
#full_constant_name, #locate, #range_from_syntax_tree_node, #visible?
Constructor Details
#initialize(document) ⇒ FoldingRanges
Returns a new instance of FoldingRanges.
64 65 66 67 68 69 |
# File 'lib/ruby_lsp/requests/folding_ranges.rb', line 64 def initialize(document) super @ranges = T.let([], T::Array[LanguageServer::Protocol::Interface::FoldingRange]) @partial_range = T.let(nil, T.nilable(PartialRange)) end |
Instance Method Details
#run ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/ruby_lsp/requests/folding_ranges.rb', line 72 def run if @document.parsed? visit(@document.tree) emit_partial_range end @ranges end |