Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }