class Steep::Server::InteractionWorker

def response_to_hover(path:, line:, column:)

def response_to_hover(path:, line:, column:)
  Steep.logger.tagged "#response_to_hover" do
    Steep.logger.debug { "path=#{path}, line=#{line}, column=#{column}" }
    hover = Project::HoverContent.new(project: project)
    content = hover.content_for(path: path, line: line+1, column: column+1)
    if content
      range = content.location.yield_self do |location|
        start_position = { line: location.line - 1, character: location.column }
        end_position = { line: location.last_line - 1, character: location.last_column }
        { start: start_position, end: end_position }
      end
      LSP::Interface::Hover.new(
        contents: { kind: "markdown", value: format_hover(content) },
        range: range
      )
    end
  rescue Typing::UnknownNodeError => exn
    Steep.log_error exn, message: "Failed to compute hover: #{exn.inspect}"
    nil
  end
end