Class: RubyLsp::Listeners::Hover
- Inherits:
-
Object
- Object
- RubyLsp::Listeners::Hover
- Extended by:
- T::Sig
- Includes:
- Requests::Support::Common
- Defined in:
- lib/ruby_lsp/listeners/hover.rb
Constant Summary collapse
- ALLOWED_TARGETS =
T.let( [ Prism::CallNode, Prism::ConstantReadNode, Prism::ConstantWriteNode, Prism::ConstantPathNode, Prism::InstanceVariableReadNode, Prism::InstanceVariableAndWriteNode, Prism::InstanceVariableOperatorWriteNode, Prism::InstanceVariableOrWriteNode, Prism::InstanceVariableTargetNode, Prism::InstanceVariableWriteNode, Prism::SymbolNode, Prism::StringNode, Prism::SuperNode, Prism::ForwardingSuperNode, ], T::Array[T.class_of(Prism::Node)], )
- ALLOWED_REMOTE_PROVIDERS =
T.let( [ "https://github.com", "https://gitlab.com", ].freeze, T::Array[String], )
Instance Method Summary collapse
-
#initialize(response_builder, global_state, uri, node_context, dispatcher, sorbet_level) ⇒ Hover
constructor
rubocop:disable Metrics/ParameterLists.
- #on_call_node_enter(node) ⇒ Object
- #on_constant_path_node_enter(node) ⇒ Object
- #on_constant_read_node_enter(node) ⇒ Object
- #on_constant_write_node_enter(node) ⇒ Object
- #on_forwarding_super_node_enter(node) ⇒ Object
- #on_instance_variable_and_write_node_enter(node) ⇒ Object
- #on_instance_variable_operator_write_node_enter(node) ⇒ Object
- #on_instance_variable_or_write_node_enter(node) ⇒ Object
- #on_instance_variable_read_node_enter(node) ⇒ Object
- #on_instance_variable_target_node_enter(node) ⇒ Object
- #on_instance_variable_write_node_enter(node) ⇒ Object
- #on_super_node_enter(node) ⇒ Object
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?, #sorbet_level_true_or_higher?, #visible?
Constructor Details
#initialize(response_builder, global_state, uri, node_context, dispatcher, sorbet_level) ⇒ Hover
rubocop:disable Metrics/ParameterLists
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 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 48 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 = T.let(global_state.index, RubyIndexer::Index) @type_inferrer = T.let(global_state.type_inferrer, TypeInferrer) @path = T.let(uri.to_standardized_path, T.nilable(String)) @node_context = node_context @sorbet_level = sorbet_level dispatcher.register( self, :on_constant_read_node_enter, :on_constant_write_node_enter, :on_constant_path_node_enter, :on_call_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, ) end |
Instance Method Details
#on_call_node_enter(node) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 102 def on_call_node_enter(node) if @path && File.basename(@path) == GEMFILE_NAME && node.name == :gem generate_gem_hover(node) return end return if sorbet_level_true_or_higher?(@sorbet_level) && self_receiver?(node) = node. return unless handle_method_hover() end |
#on_constant_path_node_enter(node) ⇒ Object
92 93 94 95 96 97 98 99 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 92 def on_constant_path_node_enter(node) return if @sorbet_level != RubyDocument::SorbetLevel::Ignore name = constant_name(node) return if name.nil? generate_hover(name, node.location) end |
#on_constant_read_node_enter(node) ⇒ Object
75 76 77 78 79 80 81 82 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 75 def on_constant_read_node_enter(node) return if @sorbet_level != RubyDocument::SorbetLevel::Ignore name = constant_name(node) return if name.nil? generate_hover(name, node.location) end |
#on_constant_write_node_enter(node) ⇒ Object
85 86 87 88 89 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 85 def on_constant_write_node_enter(node) return if @sorbet_level != RubyDocument::SorbetLevel::Ignore generate_hover(node.name.to_s, node.name_loc) end |
#on_forwarding_super_node_enter(node) ⇒ Object
152 153 154 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 152 def on_forwarding_super_node_enter(node) handle_super_node_hover end |
#on_instance_variable_and_write_node_enter(node) ⇒ Object
127 128 129 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 127 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
132 133 134 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 132 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
137 138 139 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 137 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
117 118 119 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 117 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
142 143 144 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 142 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
122 123 124 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 122 def on_instance_variable_write_node_enter(node) handle_instance_variable_hover(node.name.to_s) end |
#on_super_node_enter(node) ⇒ Object
147 148 149 |
# File 'lib/ruby_lsp/listeners/hover.rb', line 147 def on_super_node_enter(node) handle_super_node_hover end |