Class: RubyLsp::Listeners::Hover
- Inherits:
-
Object
- Object
- RubyLsp::Listeners::Hover
- Includes:
- Requests::Support::Common
- Defined in:
- lib/ruby_lsp/listeners/hover.rb
Constant Summary collapse
- ALLOWED_TARGETS =
[ Prism::BreakNode, Prism::CallNode, Prism::ConstantReadNode, Prism::ConstantWriteNode, Prism::ConstantPathNode, Prism::GlobalVariableAndWriteNode, Prism::GlobalVariableOperatorWriteNode, Prism::GlobalVariableOrWriteNode, Prism::GlobalVariableReadNode, Prism::GlobalVariableTargetNode, Prism::GlobalVariableWriteNode, Prism::InstanceVariableReadNode, Prism::InstanceVariableAndWriteNode, Prism::InstanceVariableOperatorWriteNode, Prism::InstanceVariableOrWriteNode, Prism::InstanceVariableTargetNode, Prism::InstanceVariableWriteNode, Prism::SymbolNode, Prism::StringNode, Prism::InterpolatedStringNode, Prism::SuperNode, Prism::ForwardingSuperNode, Prism::YieldNode, Prism::ClassVariableAndWriteNode, Prism::ClassVariableOperatorWriteNode, Prism::ClassVariableOrWriteNode, Prism::ClassVariableReadNode, Prism::ClassVariableTargetNode, Prism::ClassVariableWriteNode, ]
- ALLOWED_REMOTE_PROVIDERS =
: Array
[ "https://github.com", "https://gitlab.com", ].freeze
Instance Method Summary collapse
-
#initialize(response_builder, global_state, uri, node_context, dispatcher, sorbet_level) ⇒ Hover
constructor
: (ResponseBuilders::Hover response_builder, GlobalState global_state, URI::Generic uri, NodeContext node_context, Prism::Dispatcher dispatcher, SorbetLevel sorbet_level) -> void.
-
#on_break_node_enter(node) ⇒ Object
: (Prism::BreakNode node) -> void.
-
#on_call_node_enter(node) ⇒ Object
: (Prism::CallNode node) -> void.
-
#on_class_variable_and_write_node_enter(node) ⇒ Object
: (Prism::ClassVariableAndWriteNode node) -> void.
-
#on_class_variable_operator_write_node_enter(node) ⇒ Object
: (Prism::ClassVariableOperatorWriteNode node) -> void.
-
#on_class_variable_or_write_node_enter(node) ⇒ Object
: (Prism::ClassVariableOrWriteNode node) -> void.
-
#on_class_variable_read_node_enter(node) ⇒ Object
: (Prism::ClassVariableReadNode node) -> void.
-
#on_class_variable_target_node_enter(node) ⇒ Object
: (Prism::ClassVariableTargetNode node) -> void.
-
#on_class_variable_write_node_enter(node) ⇒ Object
: (Prism::ClassVariableWriteNode node) -> void.
-
#on_constant_path_node_enter(node) ⇒ Object
: (Prism::ConstantPathNode node) -> void.
-
#on_constant_read_node_enter(node) ⇒ Object
: (Prism::ConstantReadNode node) -> void.
-
#on_constant_write_node_enter(node) ⇒ Object
: (Prism::ConstantWriteNode node) -> void.
-
#on_forwarding_super_node_enter(node) ⇒ Object
: (Prism::ForwardingSuperNode node) -> void.
-
#on_global_variable_and_write_node_enter(node) ⇒ Object
: (Prism::GlobalVariableAndWriteNode node) -> void.
-
#on_global_variable_operator_write_node_enter(node) ⇒ Object
: (Prism::GlobalVariableOperatorWriteNode node) -> void.
-
#on_global_variable_or_write_node_enter(node) ⇒ Object
: (Prism::GlobalVariableOrWriteNode node) -> void.
-
#on_global_variable_read_node_enter(node) ⇒ Object
: (Prism::GlobalVariableReadNode node) -> void.
-
#on_global_variable_target_node_enter(node) ⇒ Object
: (Prism::GlobalVariableTargetNode node) -> void.
-
#on_global_variable_write_node_enter(node) ⇒ Object
: (Prism::GlobalVariableWriteNode node) -> void.
-
#on_instance_variable_and_write_node_enter(node) ⇒ Object
: (Prism::InstanceVariableAndWriteNode node) -> void.
-
#on_instance_variable_operator_write_node_enter(node) ⇒ Object
: (Prism::InstanceVariableOperatorWriteNode node) -> void.
-
#on_instance_variable_or_write_node_enter(node) ⇒ Object
: (Prism::InstanceVariableOrWriteNode node) -> void.
-
#on_instance_variable_read_node_enter(node) ⇒ Object
: (Prism::InstanceVariableReadNode node) -> void.
-
#on_instance_variable_target_node_enter(node) ⇒ Object
: (Prism::InstanceVariableTargetNode node) -> void.
-
#on_instance_variable_write_node_enter(node) ⇒ Object
: (Prism::InstanceVariableWriteNode node) -> void.
-
#on_interpolated_string_node_enter(node) ⇒ Object
: (Prism::InterpolatedStringNode node) -> void.
-
#on_string_node_enter(node) ⇒ Object
: (Prism::StringNode node) -> void.
-
#on_super_node_enter(node) ⇒ Object
: (Prism::SuperNode node) -> void.
-
#on_yield_node_enter(node) ⇒ Object
: (Prism::YieldNode node) -> void.
Methods included from Requests::Support::Common
#categorized_markdown_from_index_entries, #constant_name, #create_code_lens, #each_constant_path_part, #kind_for_entry, #markdown_from_index_entries, #namespace_constant_name, #not_in_dependencies?, #range_from_location, #range_from_node, #self_receiver?
Constructor Details
#initialize(response_builder, global_state, uri, node_context, dispatcher, sorbet_level) ⇒ Hover
: (ResponseBuilders::Hover response_builder, GlobalState global_state, URI::Generic uri, NodeContext node_context, Prism::Dispatcher dispatcher, SorbetLevel sorbet_level) -> void
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 47 def initialize(response_builder, global_state, uri, node_context, dispatcher, sorbet_level) # rubocop:disable Metrics/ParameterLists @response_builder = response_builder @global_state = global_state @index = global_state.index #: RubyIndexer::Index @type_inferrer = global_state.type_inferrer #: TypeInferrer @path = uri.to_standardized_path #: String? @node_context = node_context @sorbet_level = sorbet_level dispatcher.register( self, :on_break_node_enter, :on_constant_read_node_enter, :on_constant_write_node_enter, :on_constant_path_node_enter, :on_call_node_enter, :on_global_variable_and_write_node_enter, :on_global_variable_operator_write_node_enter, :on_global_variable_or_write_node_enter, :on_global_variable_read_node_enter, :on_global_variable_target_node_enter, :on_global_variable_write_node_enter, :on_instance_variable_read_node_enter, :on_instance_variable_write_node_enter, :on_instance_variable_and_write_node_enter, :on_instance_variable_operator_write_node_enter, :on_instance_variable_or_write_node_enter, :on_instance_variable_target_node_enter, :on_super_node_enter, :on_forwarding_super_node_enter, :on_string_node_enter, :on_interpolated_string_node_enter, :on_yield_node_enter, :on_class_variable_and_write_node_enter, :on_class_variable_operator_write_node_enter, :on_class_variable_or_write_node_enter, :on_class_variable_read_node_enter, :on_class_variable_target_node_enter, :on_class_variable_write_node_enter, ) end |
Instance Method Details
#on_break_node_enter(node) ⇒ Object
: (Prism::BreakNode node) -> void
90 91 92 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 90 def on_break_node_enter(node) handle_keyword_documentation(node.keyword) end |
#on_call_node_enter(node) ⇒ Object
: (Prism::CallNode node) -> void
140 141 142 143 144 145 146 147 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 140 def on_call_node_enter(node) return if @sorbet_level.true_or_higher? && self_receiver?(node) = node. return unless handle_method_hover() end |
#on_class_variable_and_write_node_enter(node) ⇒ Object
: (Prism::ClassVariableAndWriteNode node) -> void
225 226 227 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 225 def on_class_variable_and_write_node_enter(node) handle_class_variable_hover(node.name.to_s) end |
#on_class_variable_operator_write_node_enter(node) ⇒ Object
: (Prism::ClassVariableOperatorWriteNode node) -> void
230 231 232 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 230 def on_class_variable_operator_write_node_enter(node) handle_class_variable_hover(node.name.to_s) end |
#on_class_variable_or_write_node_enter(node) ⇒ Object
: (Prism::ClassVariableOrWriteNode node) -> void
235 236 237 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 235 def on_class_variable_or_write_node_enter(node) handle_class_variable_hover(node.name.to_s) end |
#on_class_variable_read_node_enter(node) ⇒ Object
: (Prism::ClassVariableReadNode node) -> void
245 246 247 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 245 def on_class_variable_read_node_enter(node) handle_class_variable_hover(node.name.to_s) end |
#on_class_variable_target_node_enter(node) ⇒ Object
: (Prism::ClassVariableTargetNode node) -> void
240 241 242 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 240 def on_class_variable_target_node_enter(node) handle_class_variable_hover(node.name.to_s) end |
#on_class_variable_write_node_enter(node) ⇒ Object
: (Prism::ClassVariableWriteNode node) -> void
250 251 252 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 250 def on_class_variable_write_node_enter(node) handle_class_variable_hover(node.name.to_s) end |
#on_constant_path_node_enter(node) ⇒ Object
: (Prism::ConstantPathNode node) -> void
130 131 132 133 134 135 136 137 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 130 def on_constant_path_node_enter(node) return unless @sorbet_level.ignore? name = RubyIndexer::Index.constant_name(node) return if name.nil? generate_hover(name, node.location) end |
#on_constant_read_node_enter(node) ⇒ Object
: (Prism::ConstantReadNode node) -> void
113 114 115 116 117 118 119 120 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 113 def on_constant_read_node_enter(node) return unless @sorbet_level.ignore? name = RubyIndexer::Index.constant_name(node) return if name.nil? generate_hover(name, node.location) end |
#on_constant_write_node_enter(node) ⇒ Object
: (Prism::ConstantWriteNode node) -> void
123 124 125 126 127 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 123 def on_constant_write_node_enter(node) return unless @sorbet_level.ignore? generate_hover(node.name.to_s, node.name_loc) end |
#on_forwarding_super_node_enter(node) ⇒ Object
: (Prism::ForwardingSuperNode node) -> void
215 216 217 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 215 def on_forwarding_super_node_enter(node) handle_super_node_hover end |
#on_global_variable_and_write_node_enter(node) ⇒ Object
: (Prism::GlobalVariableAndWriteNode node) -> void
150 151 152 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 150 def on_global_variable_and_write_node_enter(node) handle_global_variable_hover(node.name.to_s) end |
#on_global_variable_operator_write_node_enter(node) ⇒ Object
: (Prism::GlobalVariableOperatorWriteNode node) -> void
155 156 157 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 155 def on_global_variable_operator_write_node_enter(node) handle_global_variable_hover(node.name.to_s) end |
#on_global_variable_or_write_node_enter(node) ⇒ Object
: (Prism::GlobalVariableOrWriteNode node) -> void
160 161 162 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 160 def on_global_variable_or_write_node_enter(node) handle_global_variable_hover(node.name.to_s) end |
#on_global_variable_read_node_enter(node) ⇒ Object
: (Prism::GlobalVariableReadNode node) -> void
165 166 167 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 165 def on_global_variable_read_node_enter(node) handle_global_variable_hover(node.name.to_s) end |
#on_global_variable_target_node_enter(node) ⇒ Object
: (Prism::GlobalVariableTargetNode node) -> void
170 171 172 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 170 def on_global_variable_target_node_enter(node) handle_global_variable_hover(node.name.to_s) end |
#on_global_variable_write_node_enter(node) ⇒ Object
: (Prism::GlobalVariableWriteNode node) -> void
175 176 177 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 175 def on_global_variable_write_node_enter(node) handle_global_variable_hover(node.name.to_s) end |
#on_instance_variable_and_write_node_enter(node) ⇒ Object
: (Prism::InstanceVariableAndWriteNode node) -> void
190 191 192 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 190 def on_instance_variable_and_write_node_enter(node) handle_instance_variable_hover(node.name.to_s) end |
#on_instance_variable_operator_write_node_enter(node) ⇒ Object
: (Prism::InstanceVariableOperatorWriteNode node) -> void
195 196 197 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 195 def on_instance_variable_operator_write_node_enter(node) handle_instance_variable_hover(node.name.to_s) end |
#on_instance_variable_or_write_node_enter(node) ⇒ Object
: (Prism::InstanceVariableOrWriteNode node) -> void
200 201 202 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 200 def on_instance_variable_or_write_node_enter(node) handle_instance_variable_hover(node.name.to_s) end |
#on_instance_variable_read_node_enter(node) ⇒ Object
: (Prism::InstanceVariableReadNode node) -> void
180 181 182 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 180 def on_instance_variable_read_node_enter(node) handle_instance_variable_hover(node.name.to_s) end |
#on_instance_variable_target_node_enter(node) ⇒ Object
: (Prism::InstanceVariableTargetNode node) -> void
205 206 207 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 205 def on_instance_variable_target_node_enter(node) handle_instance_variable_hover(node.name.to_s) end |
#on_instance_variable_write_node_enter(node) ⇒ Object
: (Prism::InstanceVariableWriteNode node) -> void
185 186 187 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 185 def on_instance_variable_write_node_enter(node) handle_instance_variable_hover(node.name.to_s) end |
#on_interpolated_string_node_enter(node) ⇒ Object
: (Prism::InterpolatedStringNode node) -> void
108 109 110 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 108 def on_interpolated_string_node_enter(node) generate_heredoc_hover(node) end |
#on_string_node_enter(node) ⇒ Object
: (Prism::StringNode node) -> void
95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 95 def on_string_node_enter(node) if @path && File.basename(@path) == GEMFILE_NAME call_node = @node_context.call_node if call_node && call_node.name == :gem && call_node.arguments&.arguments&.first == node generate_gem_hover(call_node) return end end generate_heredoc_hover(node) end |
#on_super_node_enter(node) ⇒ Object
: (Prism::SuperNode node) -> void
210 211 212 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 210 def on_super_node_enter(node) handle_super_node_hover end |
#on_yield_node_enter(node) ⇒ Object
: (Prism::YieldNode node) -> void
220 221 222 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 220 def on_yield_node_enter(node) handle_keyword_documentation(node.keyword) end |