Ejemplo n.º 1
0
        public override async Task ProvideCompletionsAsync(CompletionContext context)
        {
            var document          = context.Document;
            var position          = context.Position;
            var cancellationToken = context.CancellationToken;
            var semanticModel     = await document.ReuseExistingSpeculativeModelAsync(position, cancellationToken).ConfigureAwait(false);

            var workspace     = document.Project.Solution.Workspace;
            var syntaxContext = CSharpSyntaxContext.CreateContext(workspace, semanticModel, position, cancellationToken);

            if (!syntaxContext.IsAwaitKeywordContext(position))
            {
                return;
            }

            var method = syntaxContext.TargetToken.GetAncestor(node => node.IsAsyncSupportingFunctionSyntax());
            var shouldMakeContainerAsync = method is not null && !method.GetModifiers().Any(SyntaxKind.AsyncKeyword);
            var completionItem           = CommonCompletionItem.Create(
                displayText: SyntaxFacts.GetText(SyntaxKind.AwaitKeyword),
                displayTextSuffix: "",
                rules: CompletionItemRules.Default,
                Glyph.Keyword,
                description: RecommendedKeyword.CreateDisplayParts(SyntaxFacts.GetText(SyntaxKind.AwaitKeyword), string.Empty),
                inlineDescription: shouldMakeContainerAsync ? CSharpFeaturesResources.Make_container_async : null,
                isComplexTextEdit: shouldMakeContainerAsync);

            context.AddItem(completionItem);
        }
Ejemplo n.º 2
0
 protected override CompletionItem CreateItem(RecommendedKeyword keyword, TextSpan span)
 {
     return(CommonCompletionItem.Create(
                displayText: keyword.Keyword,
                span: span,
                description: keyword.DescriptionFactory(CancellationToken.None),
                glyph: Glyph.Keyword,
                shouldFormatOnCommit: keyword.ShouldFormatOnCommit));
 }
 protected override CompletionItem CreateItem(RecommendedKeyword keyword, TextSpan filterSpan)
 {
     return new CompletionItem(
         this,
         displayText: keyword.Keyword,
         filterSpan: filterSpan,
         descriptionFactory: c => Task.FromResult(keyword.DescriptionFactory(c)),
         glyph: Glyph.Keyword,
         shouldFormatOnCommit: keyword.ShouldFormatOnCommit);
 }
Ejemplo n.º 4
0
        protected override CompletionItem CreateItem(RecommendedKeyword keyword, CSharpSyntaxContext context)
        {
            var rules = context.IsPossibleTupleContext ? s_tupleRules : CompletionItemRules.Default;

            return(CommonCompletionItem.Create(
                       displayText: keyword.Keyword,
                       description: keyword.DescriptionFactory(CancellationToken.None),
                       glyph: Glyph.Keyword,
                       rules: rules.WithMatchPriority(keyword.MatchPriority)
                       .WithFormatOnCommit(keyword.ShouldFormatOnCommit)));
        }
Ejemplo n.º 5
0
 public static ImmutableArray <SymbolDisplayPart> CreateRecommendedKeywordDisplayParts(
     string keyword,
     string toolTip
     ) => RecommendedKeyword.CreateDisplayParts(keyword, toolTip);
Ejemplo n.º 6
0
 protected override CompletionItem CreateItem(Workspace workspace, TextSpan span, RecommendedKeyword keyword)
 {
     return(new CSharpCompletionItem(
                workspace,
                this,
                displayText: keyword.Keyword,
                filterSpan: span,
                descriptionFactory: (c) => Task.FromResult(keyword.DescriptionFactory(c)),
                glyph: Glyph.Keyword,
                shouldFormatOnCommit: keyword.ShouldFormatOnCommit));
 }