public static async Task <Hover> Handle(CSharpContext context, string code, int line, int column) { var _document = context.WithText(code); var position = context.GetPosition(line, column); var semanticModel = await _document.GetSemanticModelAsync(); var symbol = await SymbolFinder.FindSymbolAtPositionAsync(semanticModel, position, context.Workspace); if (symbol != null) { var type = symbol.Kind == SymbolKind.NamedType ? symbol.ToDisplayString() : symbol.ToMinimalDisplayString(semanticModel, position); var documentation = DocumentationConverter.ConvertDocumentation(symbol.GetDocumentationCommentXml(), "\r\n"); var structuredDocumentation = DocumentationConverter.GetStructuredDocumentation(symbol, "\r\n"); return(new Hover { contents = new List <MarkedString> { new MarkedString { value = type, language = "csharp" }, new MarkedString { value = string.IsNullOrEmpty(documentation) ? structuredDocumentation.SummaryText : documentation }, } }); } return(null); }
private static AutoCompleteResponse MakeAutoCompleteResponse(ISymbol symbol, string completionText, bool isSuggestionMode, bool includeOptionalParams = true) { var displayNameGenerator = new SnippetGenerator(); displayNameGenerator.IncludeMarkers = false; displayNameGenerator.IncludeOptionalParameters = includeOptionalParams; var response = new AutoCompleteResponse(); response.CompletionText = completionText; // TODO: Do something more intelligent here response.DisplayText = displayNameGenerator.Generate(symbol); response.IsSuggestionMode = isSuggestionMode; //if (request.WantDocumentationForEveryCompletionResult) { response.Description = DocumentationConverter.ConvertDocumentation(symbol.GetDocumentationCommentXml(), "\r\n"); } //if (request.WantReturnType) { response.ReturnType = ReturnTypeFormatter.GetReturnType(symbol); } //if (request.WantKind) { response.Kind = symbol.GetKind(); } //if (request.WantSnippet) { var snippetGenerator = new SnippetGenerator(); snippetGenerator.IncludeMarkers = true; snippetGenerator.IncludeOptionalParameters = includeOptionalParams; response.Snippet = snippetGenerator.Generate(symbol); } //if (request.WantMethodHeader) { response.MethodHeader = displayNameGenerator.Generate(symbol); } return(response); }