Class: RubyLsp::Rails::Hover
- Inherits:
-
Object
- Object
- RubyLsp::Rails::Hover
- Extended by:
- T::Sig
- Includes:
- Requests::Support::Common
- Defined in:
- lib/ruby_lsp/ruby_lsp_rails/hover.rb
Overview
![Hover demo](../../hover.gif)
Augment [hover](microsoft.github.io/language-server-protocol/specification#textDocument_hover) with information about a model.
# Example
“‘ruby User.all # ^ hovering here will show information about the User model “`
Instance Method Summary collapse
-
#initialize(client, response_builder, node_context, global_state, dispatcher) ⇒ Hover
constructor
A new instance of Hover.
- #on_call_node_enter(node) ⇒ Object
- #on_constant_path_node_enter(node) ⇒ Object
- #on_constant_read_node_enter(node) ⇒ Object
Constructor Details
#initialize(client, response_builder, node_context, global_state, dispatcher) ⇒ Hover
Returns a new instance of Hover.
32 33 34 35 36 37 38 |
# File 'lib/ruby_lsp/ruby_lsp_rails/hover.rb', line 32 def initialize(client, response_builder, node_context, global_state, dispatcher) @client = client @response_builder = response_builder @nesting = T.let(node_context.nesting, T::Array[String]) @index = T.let(global_state.index, RubyIndexer::Index) dispatcher.register(self, :on_constant_path_node_enter, :on_constant_read_node_enter, :on_call_node_enter) end |
Instance Method Details
#on_call_node_enter(node) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/ruby_lsp/ruby_lsp_rails/hover.rb', line 61 def on_call_node_enter(node) = node. = node. return unless && generate_rails_document_link_hover(, ) end |
#on_constant_path_node_enter(node) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/ruby_lsp/ruby_lsp_rails/hover.rb', line 41 def on_constant_path_node_enter(node) entries = @index.resolve(node.slice, @nesting) return unless entries name = T.must(entries.first).name generate_column_content(name) generate_rails_document_link_hover(name, node.location) end |
#on_constant_read_node_enter(node) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/ruby_lsp/ruby_lsp_rails/hover.rb', line 53 def on_constant_read_node_enter(node) entries = @index.resolve(node.name.to_s, @nesting) return unless entries generate_column_content(T.must(entries.first).name) end |