lib/solargraph/language_server/message/text_document/hover.rb
# frozen_string_literal: true require 'uri' require 'htmlentities' module Solargraph module LanguageServer module Message module TextDocument class Hover < Base def process line = params['position']['line'] col = params['position']['character'] contents = [] suggestions = host.definitions_at(params['textDocument']['uri'], line, col) last_link = nil suggestions.each do |pin| parts = [] this_link = pin.link_documentation if !this_link.nil? && this_link != last_link parts.push this_link end parts.push HTMLEntities.new.encode(pin.detail) unless pin.is_a?(Pin::Namespace) || pin.detail.nil? parts.push pin.documentation unless pin.documentation.nil? or pin.documentation.empty? contents.push parts.join("\n\n") unless parts.empty? last_link = this_link unless this_link.nil? end set_result( contents: { kind: 'markdown', value: contents.join("\n\n") } ) rescue FileNotFoundError => e Logging.logger.warn "[#{e.class}] #{e.message}" Logging.logger.warn e.backtrace.join("\n") set_result nil end end end end end end