From ff09b954bf2e52e7bc8e8278388d873757bbf902 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Thu, 10 Sep 2015 16:19:52 -0700 Subject: [PATCH] Make C# CrefCompletionProvider inherit from CompletionListProvider --- .../CrefCompletionProvider.cs | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/Features/CSharp/Portable/Completion/CompletionProviders/CrefCompletionProvider.cs b/src/Features/CSharp/Portable/Completion/CompletionProviders/CrefCompletionProvider.cs index abca174c5fc..a638ed3c20b 100644 --- a/src/Features/CSharp/Portable/Completion/CompletionProviders/CrefCompletionProvider.cs +++ b/src/Features/CSharp/Portable/Completion/CompletionProviders/CrefCompletionProvider.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Completion; -using Microsoft.CodeAnalysis.Completion.Providers; using Microsoft.CodeAnalysis.CSharp.Extensions; using Microsoft.CodeAnalysis.CSharp.Symbols; using Microsoft.CodeAnalysis.CSharp.Syntax; @@ -16,7 +15,7 @@ namespace Microsoft.CodeAnalysis.CSharp.Completion.Providers { - internal partial class CrefCompletionProvider : AbstractCompletionProvider + internal partial class CrefCompletionProvider : CompletionListProvider { public static readonly SymbolDisplayFormat CrefFormat = new SymbolDisplayFormat( @@ -35,24 +34,23 @@ public override bool IsTriggerCharacter(SourceText text, int characterPosition, return CompletionUtilities.IsTriggerCharacter(text, characterPosition, options); } - protected override Task IsExclusiveAsync(Document document, int position, CompletionTriggerInfo triggerInfo, CancellationToken cancellationToken) + public override async Task ProduceCompletionListAsync(CompletionListContext context) { - return SpecializedTasks.True; - } + var document = context.Document; + var position = context.Position; + var cancellationToken = context.CancellationToken; - protected override async Task> GetItemsWorkerAsync(Document document, int position, CompletionTriggerInfo triggerInfo, System.Threading.CancellationToken cancellationToken) - { var tree = await document.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(false); if (!tree.IsEntirelyWithinCrefSyntax(position, cancellationToken)) { - return null; + return; } var token = tree.FindTokenOnLeftOfPosition(position, cancellationToken); token = token.GetPreviousTokenIfTouchingWord(position); if (token.Kind() == SyntaxKind.None) { - return null; + return; } var result = SpecializedCollections.EmptyEnumerable(); @@ -93,8 +91,13 @@ protected override async Task> GetItemsWorkerAsync(D } } - return await CreateItemsAsync(document.Project.Solution.Workspace, semanticModel, - position, result, token, cancellationToken).ConfigureAwait(false); + var items = await CreateItemsAsync(document.Project.Solution.Workspace, semanticModel, position, result, token, cancellationToken).ConfigureAwait(false); + + if (items.Any()) + { + context.MakeExclusive(true); + context.AddItems(items); + } } private bool IsSignatureContext(SyntaxToken token) -- GitLab