func()

in src/scip-lib/registry/partial_registry.go [219:250]


func (p *partialScipRegistry) Hover(uri uri.URI, pos protocol.Position) (string, *model.Occurrence, error) {
	doc, err := p.Index.LoadDocument(p.uriToRelativePath(uri))
	if err != nil {
		p.logger.Errorf("failed to load document %s: %s", uri, err)
		return "", nil, err
	}
	if doc == nil {
		return "", nil, nil
	}

	occurrence := utils.GetOccurrenceForPosition(doc.Occurrences, pos)
	if occurrence == nil {
		return "", nil, nil
	}
	var docs string

	symbolInformation, _, err := p.Index.GetSymbolInformation(occurrence.Symbol)
	if err != nil {
		p.logger.Errorf("failed to get symbol information for %s: %s", occurrence.Symbol, err)
		return "", nil, err
	}

	if len(occurrence.OverrideDocumentation) > 0 {
		docs += strings.Join(occurrence.OverrideDocumentation, "\n")
	} else if symbolInformation != nil && len(symbolInformation.Documentation) > 0 {
		docs += strings.Join(symbolInformation.Documentation, "\n")
	} else if symbolInformation != nil && symbolInformation.SignatureDocumentation != nil {
		docs += symbolInformation.SignatureDocumentation.Text
	}

	return docs, occurrence, nil
}