Class: RubyLsp::Listeners::FoldingRanges
- Inherits:
-
RubyLsp::Listener
- Object
- RubyLsp::Listener
- RubyLsp::Listeners::FoldingRanges
- Extended by:
- T::Generic, T::Sig
- Defined in:
- lib/ruby_lsp/listeners/folding_ranges.rb
Constant Summary collapse
- ResponseType =
type_member { { fixed: T::Array[Interface::FoldingRange] } }
Instance Method Summary collapse
- #_response ⇒ Object
-
#initialize(comments, dispatcher) ⇒ FoldingRanges
constructor
A new instance of FoldingRanges.
- #on_array_node_enter(node) ⇒ Object
- #on_begin_node_enter(node) ⇒ Object
- #on_block_node_enter(node) ⇒ Object
- #on_call_node_enter(node) ⇒ Object
- #on_case_match_node_enter(node) ⇒ Object
- #on_case_node_enter(node) ⇒ Object
- #on_class_node_enter(node) ⇒ Object
- #on_def_node_enter(node) ⇒ Object
- #on_else_node_enter(node) ⇒ Object
- #on_ensure_node_enter(node) ⇒ Object
- #on_for_node_enter(node) ⇒ Object
- #on_hash_node_enter(node) ⇒ Object
- #on_if_node_enter(node) ⇒ Object
- #on_in_node_enter(node) ⇒ Object
- #on_interpolated_string_node_enter(node) ⇒ Object
- #on_lambda_node_enter(node) ⇒ Object
- #on_module_node_enter(node) ⇒ Object
- #on_rescue_node_enter(node) ⇒ Object
- #on_singleton_class_node_enter(node) ⇒ Object
- #on_unless_node_enter(node) ⇒ Object
- #on_until_node_enter(node) ⇒ Object
- #on_when_node_enter(node) ⇒ Object
- #on_while_node_enter(node) ⇒ Object
Methods inherited from RubyLsp::Listener
Methods included from Requests::Support::Common
#create_code_lens, #markdown_from_index_entries, #not_in_dependencies?, #range_from_location, #range_from_node, #self_receiver?, #visible?
Constructor Details
#initialize(comments, dispatcher) ⇒ FoldingRanges
Returns a new instance of FoldingRanges.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 13 def initialize(comments, dispatcher) super(dispatcher) @_response = T.let([], ResponseType) @requires = T.let([], T::Array[Prism::CallNode]) @finalized_response = T.let(false, T::Boolean) @comments = comments dispatcher.register( self, :on_if_node_enter, :on_in_node_enter, :on_rescue_node_enter, :on_when_node_enter, :on_interpolated_string_node_enter, :on_array_node_enter, :on_block_node_enter, :on_case_node_enter, :on_case_match_node_enter, :on_class_node_enter, :on_module_node_enter, :on_for_node_enter, :on_hash_node_enter, :on_singleton_class_node_enter, :on_unless_node_enter, :on_until_node_enter, :on_while_node_enter, :on_else_node_enter, :on_ensure_node_enter, :on_begin_node_enter, :on_def_node_enter, :on_call_node_enter, :on_lambda_node_enter, ) end |
Instance Method Details
#_response ⇒ Object
50 51 52 53 54 55 56 57 58 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 50 def _response unless @finalized_response push_comment_ranges emit_requires_range @finalized_response = true end @_response end |
#on_array_node_enter(node) ⇒ Object
89 90 91 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 89 def on_array_node_enter(node) add_simple_range(node) end |
#on_begin_node_enter(node) ⇒ Object
159 160 161 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 159 def on_begin_node_enter(node) add_simple_range(node) end |
#on_block_node_enter(node) ⇒ Object
94 95 96 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 94 def on_block_node_enter(node) add_simple_range(node) end |
#on_call_node_enter(node) ⇒ Object
179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 179 def on_call_node_enter(node) # If we find a require, don't visit the child nodes (prevent `super`), so that we can keep accumulating into # the `@requires` array and then push the range whenever we find a node that isn't a CallNode if require?(node) @requires << node return end location = node.location add_lines_range(location.start_line, location.end_line - 1) end |
#on_case_match_node_enter(node) ⇒ Object
104 105 106 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 104 def on_case_match_node_enter(node) add_simple_range(node) end |
#on_case_node_enter(node) ⇒ Object
99 100 101 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 99 def on_case_node_enter(node) add_simple_range(node) end |
#on_class_node_enter(node) ⇒ Object
109 110 111 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 109 def on_class_node_enter(node) add_simple_range(node) end |
#on_def_node_enter(node) ⇒ Object
164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 164 def on_def_node_enter(node) params = node.parameters parameter_loc = params&.location location = node.location if params && parameter_loc.end_line > location.start_line # Multiline parameters add_lines_range(location.start_line, parameter_loc.end_line) add_lines_range(parameter_loc.end_line + 1, location.end_line - 1) else add_lines_range(location.start_line, location.end_line - 1) end end |
#on_else_node_enter(node) ⇒ Object
149 150 151 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 149 def on_else_node_enter(node) add_simple_range(node) end |
#on_ensure_node_enter(node) ⇒ Object
154 155 156 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 154 def on_ensure_node_enter(node) add_simple_range(node) end |
#on_for_node_enter(node) ⇒ Object
119 120 121 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 119 def on_for_node_enter(node) add_simple_range(node) end |
#on_hash_node_enter(node) ⇒ Object
124 125 126 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 124 def on_hash_node_enter(node) add_simple_range(node) end |
#on_if_node_enter(node) ⇒ Object
61 62 63 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 61 def on_if_node_enter(node) add_statements_range(node) end |
#on_in_node_enter(node) ⇒ Object
66 67 68 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 66 def on_in_node_enter(node) add_statements_range(node) end |
#on_interpolated_string_node_enter(node) ⇒ Object
81 82 83 84 85 86 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 81 def on_interpolated_string_node_enter(node) opening_loc = node.opening_loc || node.location closing_loc = node.closing_loc || node.parts.last&.location || node.location add_lines_range(opening_loc.start_line, closing_loc.start_line - 1) end |
#on_lambda_node_enter(node) ⇒ Object
192 193 194 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 192 def on_lambda_node_enter(node) add_simple_range(node) end |
#on_module_node_enter(node) ⇒ Object
114 115 116 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 114 def on_module_node_enter(node) add_simple_range(node) end |
#on_rescue_node_enter(node) ⇒ Object
71 72 73 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 71 def on_rescue_node_enter(node) add_statements_range(node) end |
#on_singleton_class_node_enter(node) ⇒ Object
129 130 131 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 129 def on_singleton_class_node_enter(node) add_simple_range(node) end |
#on_unless_node_enter(node) ⇒ Object
134 135 136 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 134 def on_unless_node_enter(node) add_simple_range(node) end |
#on_until_node_enter(node) ⇒ Object
139 140 141 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 139 def on_until_node_enter(node) add_simple_range(node) end |
#on_when_node_enter(node) ⇒ Object
76 77 78 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 76 def on_when_node_enter(node) add_statements_range(node) end |
#on_while_node_enter(node) ⇒ Object
144 145 146 |
# File 'lib/ruby_lsp/listeners/folding_ranges.rb', line 144 def on_while_node_enter(node) add_simple_range(node) end |