public async Task <TypeLookupResponse> Handle(TypeLookupRequest request) { var document = _workspace.GetDocument(request.FileName); var response = new TypeLookupResponse(); if (document != null) { var semanticModel = await document.GetSemanticModelAsync(); var sourceText = await document.GetTextAsync(); var position = sourceText.Lines.GetPosition(new LinePosition(request.Line, request.Column)); var symbol = await SymbolFinder.FindSymbolAtPositionAsync(semanticModel, position, _workspace); if (symbol != null) { response.Type = symbol.Kind == SymbolKind.NamedType ? symbol.ToDisplayString(DefaultFormat) : symbol.ToMinimalDisplayString(semanticModel, position); if (request.IncludeDocumentation) { response.Documentation = DocumentationConverter.ConvertDocumentation(symbol.GetDocumentationCommentXml(), _formattingOptions.NewLine); response.StructuredDocumentation = DocumentationConverter.GetStructuredDocumentation(symbol, _formattingOptions.NewLine); } } } return(response); }
private static SignatureHelpItem BuildSignature(IMethodSymbol symbol) { var signature = new SignatureHelpItem(); signature.Documentation = symbol.GetDocumentationCommentXml(); signature.Name = symbol.MethodKind == MethodKind.Constructor ? symbol.ContainingType.Name : symbol.Name; signature.Label = symbol.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat); signature.StructuredDocumentation = DocumentationConverter.GetStructuredDocumentation(symbol); signature.Parameters = symbol.Parameters.Select(parameter => { return(new SignatureHelpParameter() { Name = parameter.Name, Label = parameter.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat), Documentation = signature.StructuredDocumentation.GetParameterText(parameter.Name) }); }); return(signature); }