Skip to content

Commit

Permalink
Revert change to a CompletionItem property which pythia depends on
Browse files Browse the repository at this point in the history
Also add required helpers so we can remove the dependency
  • Loading branch information
genlu committed Feb 24, 2022
1 parent e220335 commit 2a29b3c
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,7 @@ private VSCompletionItem Convert(
// roslynItem generated by providers can contain an insertionText in a property bag.
// We will not use it but other providers may need it.
// We actually will calculate the insertion text once again when called TryCommit.
if (!roslynItem.Properties.TryGetValue(CommonCompletionItem.InsertionTextProperty, out var insertionText))
if (!SymbolCompletionItem.TryGetInsertionText(roslynItem, out var insertionText))
{
insertionText = roslynItem.DisplayText;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,9 +260,7 @@ static async Task<TCompletionItem> CreateCompletionItemAsync<TCompletionItem>(
// If the feature flag is off, return an InsertText.
else
{
completionItem.InsertText = item.Properties.ContainsKey(CommonCompletionItem.InsertionTextProperty)
? item.Properties[CommonCompletionItem.InsertionTextProperty]
: completeDisplayText;
completionItem.InsertText = SymbolCompletionItem.TryGetInsertionText(item, out var insertionText) ? insertionText : completeDisplayText;
}

var commitCharacters = GetCommitCharacters(item, commitCharacterRulesCache, supportsVSExtensions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ private static CompletionItemRules GetRules(string displayText)

protected override Task<TextChange?> GetTextChangeAsync(CompletionItem selectedItem, char? ch, CancellationToken cancellationToken)
{
if (!selectedItem.Properties.TryGetValue(CommonCompletionItem.InsertionTextProperty, out var insertionText))
if (!SymbolCompletionItem.TryGetInsertionText(selectedItem, out var insertionText))
{
insertionText = selectedItem.DisplayText;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ namespace Microsoft.CodeAnalysis.Completion
internal static class CommonCompletionItem
{
public const string DescriptionProperty = nameof(DescriptionProperty);
public const string InsertionTextProperty = nameof(InsertionTextProperty);

public static CompletionItem Create(
string displayText,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
Expand All @@ -17,6 +18,8 @@ namespace Microsoft.CodeAnalysis.Completion.Providers
{
internal static partial class SymbolCompletionItem
{
private const string InsertionTextProperty = "InsertionText";

private static readonly Func<IReadOnlyList<ISymbol>, CompletionItem, CompletionItem> s_addSymbolEncoding = AddSymbolEncoding;
private static readonly Func<IReadOnlyList<ISymbol>, CompletionItem, CompletionItem> s_addSymbolInfo = AddSymbolInfo;
private static readonly char[] s_projectSeperators = new[] { ';' };
Expand All @@ -43,7 +46,7 @@ private static CompletionItem CreateWorker(

if (insertionText != null)
{
props = props.Add(CommonCompletionItem.InsertionTextProperty, insertionText);
props = props.Add(InsertionTextProperty, insertionText);
}

props = props.Add("ContextPosition", contextPosition.ToString());
Expand Down Expand Up @@ -254,7 +257,10 @@ public static int GetDescriptionPosition(CompletionItem item)
=> GetContextPosition(item);

public static string GetInsertionText(CompletionItem item)
=> item.Properties[CommonCompletionItem.InsertionTextProperty];
=> item.Properties[InsertionTextProperty];

public static bool TryGetInsertionText(CompletionItem item, [NotNullWhen(true)] out string? insertionText)
=> item.Properties.TryGetValue(InsertionTextProperty, out insertionText);

// COMPAT OVERLOAD: This is used by IntelliCode.
public static CompletionItem CreateWithSymbolId(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Completion.Providers;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Shared.Utilities;

namespace Microsoft.CodeAnalysis.ExternalAccess.Pythia.Api
Expand Down Expand Up @@ -48,11 +48,16 @@ public static ImmutableArray<SymbolDisplayPart> CreateRecommendedKeywordDisplayP
=> RecommendedKeyword.CreateDisplayParts(keyword, toolTip);

public static Task<CompletionDescription> GetDescriptionAsync(CompletionItem item, Document document, SymbolDescriptionOptions displayOptions, CancellationToken cancellationToken)
=> SymbolCompletionItem.GetDescriptionAsync(item, document, displayOptions, cancellationToken);
=> SymbolCompletionItem.HasSymbols(item)
? SymbolCompletionItem.GetDescriptionAsync(item, document, displayOptions, cancellationToken)
: Task.FromResult(CommonCompletionItem.GetDescription(item));

public static CompletionDescription GetDescription(CompletionItem item)
=> CommonCompletionItem.GetDescription(item);

public static bool TryGetInsertionText(CompletionItem item, [NotNullWhen(true)] out string? insertionText)
=> SymbolCompletionItem.TryGetInsertionText(item, out insertionText);

public override Task<CompletionChange> GetChangeAsync(Document document, CompletionItem item, char? commitKey = null, CancellationToken cancellationToken = default)
=> base.GetChangeAsync(document, item, commitKey, cancellationToken);

Expand Down

0 comments on commit 2a29b3c

Please sign in to comment.