Class: Rigor::LanguageServer::HoverRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/rigor/language_server/hover_renderer.rb

Overview

Builds the LSP ‘Hover.contents` markdown body. Dispatches on the hovered Prism node class so each shape (method call, constant, local, ivar, literal) gets the most relevant type-aware presentation per `docs/design/20260517-lsp-hover-completion.md`.

Instance Method Summary collapse

Instance Method Details

#render(node:, type:, node_scope_lookup:) ⇒ Object

Parameters:

  • node_scope_lookup (#[])

    node-to-scope table built by ‘ScopeIndexer.index`. The renderer indexes into it to retrieve the receiver’s narrow scope when specialising on ‘CallNode`. The lookup never returns nil (the indexer’s Hash carries ‘default_scope` as its default value), so the renderer trusts the lookup result.



24
25
26
27
28
29
# File 'lib/rigor/language_server/hover_renderer.rb', line 24

def render(node:, type:, node_scope_lookup:)
  body = render_body(node, type, node_scope_lookup)
  result = { contents: { kind: "markdown", value: body } }
  result[:range] = lsp_range_for(node) if node.respond_to?(:location) && node.location
  result
end