class Solargraph::LanguageServer::Message::CompletionItem::Resolve

completionItem/resolve message handler

Public Instance Methods

process() click to toggle source
# File lib/solargraph/language_server/message/completion_item/resolve.rb, line 10
def process
  pins = host.locate_pins(params)
  set_result merge(pins)
end

Private Instance Methods

join_docs(pins) click to toggle source
# File lib/solargraph/language_server/message/completion_item/resolve.rb, line 41
def join_docs pins
  result = []
  last_link = nil
  pins.each_with_index do |pin|
    this_link = host.options['enablePages'] ? pin.link_documentation : pin.text_documentation
    if this_link && this_link != last_link && this_link != 'undefined'
      result.push this_link
    end
    result.push pin.documentation unless result.last && result.last.end_with?(pin.documentation)
    last_link = this_link
  end
  result.join("\n\n")
end
markup_content(text) click to toggle source

@param text [String] @return [Hash{Symbol => String}]

# File lib/solargraph/language_server/message/completion_item/resolve.rb, line 33
def markup_content text
  return nil if text.strip.empty?
  {
    kind: 'markdown',
    value: text
  }
end
merge(pins) click to toggle source

@param pins [Array<Pin::Base>] @return [Hash]

# File lib/solargraph/language_server/message/completion_item/resolve.rb, line 19
def merge pins
  return params if pins.empty?
  docs = pins
         .reject { |pin| pin.documentation.empty? && pin.return_type.undefined? }
  result = params
    .transform_keys(&:to_sym)
    .merge(pins.first.resolve_completion_item)
    .merge(documentation: markup_content(join_docs(docs)))
  result[:detail] = pins.first.detail
  result
end