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
}