public static CompletionItem ToModel(this RoslynCompletionItem item)
 {
     return(new CompletionItem(
                displayText: item.DisplayText,
                kind: item.GetKind(),
                filterText: item.FilterText,
                sortText: item.SortText,
                insertText: item.FilterText));
 }
Ejemplo n.º 2
0
 public static CompletionItem ToModel(this RoslynCompletionItem item, RoslynCompletionDescription description)
 {
     return(new CompletionItem(
                displayText: item.DisplayText,
                kind: item.GetKind(),
                filterText: item.FilterText,
                sortText: item.SortText,
                insertText: item.FilterText,
                documentation: description.Text));
 }
Ejemplo n.º 3
0
        public static string GetKind(this RoslynCompletionItem completionItem)
        {
            foreach (var tag in KindTags)
            {
                if (completionItem.Tags.Contains(tag))
                {
                    return(tag);
                }
            }

            return(null);
        }
Ejemplo n.º 4
0
 public MatchResult(
     RoslynCompletionItem roslynCompletionItem,
     TEditorCompletionItem editorCompletionItem,
     bool matchedFilterText,
     PatternMatch?patternMatch,
     int index)
 {
     RoslynCompletionItem        = roslynCompletionItem;
     EditorCompletionItem        = editorCompletionItem;
     MatchedFilterText           = matchedFilterText;
     PatternMatch                = patternMatch;
     _indexInOriginalSortedOrder = index;
 }
Ejemplo n.º 5
0
 internal CompletionItem(Microsoft.CodeAnalysis.Completion.CompletionItem inner)
 {
     Inner                = inner;
     Glyph                = (Glyph?)inner.Glyph;
     DisplayText          = inner.DisplayText;
     FilterText           = inner.FilterText;
     SortText             = inner.SortText;
     Preselect            = inner.Preselect;
     Rules                = new CompletionItemRules(inner.Rules);
     FilterSpan           = inner.FilterSpan;
     IsBuilder            = inner.IsBuilder;
     ShowsWarningIcon     = inner.ShowsWarningIcon;
     ShouldFormatOnCommit = inner.ShouldFormatOnCommit;
 }
Ejemplo n.º 6
0
        private static RoslynCompletionItem GetOrAddRoslynCompletionItem(VSCompletionItem vsItem)
        {
            if (!vsItem.Properties.TryGetProperty(CompletionSource.RoslynItem, out RoslynCompletionItem roslynItem))
            {
                roslynItem = RoslynCompletionItem.Create(
                    displayText: vsItem.DisplayText,
                    filterText: vsItem.FilterText,
                    sortText: vsItem.SortText,
                    displayTextSuffix: vsItem.Suffix);

                vsItem.Properties.AddProperty(CompletionSource.RoslynItem, roslynItem);
            }

            return(roslynItem);
        }
Ejemplo n.º 7
0
        public static CompletionItem ToModel(this RoslynCompletionItem item, RoslynCompletionDescription description)
        {
            var isGeneric =
                item.Properties.TryGetValue("IsGeneric", out var isGenericProperty) &&
                bool.TryParse(isGenericProperty, out var isGenericResult) &&
                isGenericResult;

            var isMethod =
                item.Tags.Contains(WellKnownTags.Method) ||
                item.Tags.Contains(WellKnownTags.ExtensionMethod);

            var(displayTextSuffix, insertTextSuffix) = (isGeneric, isMethod) switch
            {
                (true, true) => ("<>", "<$1>($2)"),
                (true, false) => ("<>", "<$1>"),
                (false, true) => ("", "($1)"),
                (false, false) => ("", ""),
            };
        public async Task OperatorIndexerCompletionItemsShouldBePlacedLastInCompletionList()
        {
            var castCompletionItem = (await GetCompletionItemsAsync(@"
public class C
{
    public static explicit operator float(C c) => 0;
}

public class Program
{
    public static void Main()
    {
        var c = new C();
        c.$$
    }
}
", SourceCodeKind.Regular)).Single();

            var completionList = new[] {
                CompletionItem.Create("SomeText0"),
                castCompletionItem,
                CompletionItem.Create("SomeText1"),
                CompletionItem.Create("\uffdcStartWith_FFDC_Identifier"),        // http://www.fileformat.info/info/unicode/char/ffdc/index.htm
                CompletionItem.Create("SomeText2"),
                CompletionItem.Create("\uD884\uDF4AStartWith_3134A_Identifier"), // http://www.fileformat.info/info/unicode/char/3134a/index.htm
                CompletionItem.Create("SomeText3"),
            };

            Array.Sort(completionList);
            Assert.Collection(completionList,
                              c => Assert.Equal("SomeText0", c.DisplayText),
                              c => Assert.Equal("SomeText1", c.DisplayText),
                              c => Assert.Equal("SomeText2", c.DisplayText),
                              c => Assert.Equal("SomeText3", c.DisplayText),
                              c => Assert.Equal("\uD884\uDF4AStartWith_3134A_Identifier", c.DisplayText),
                              c => Assert.Equal("\uffdcStartWith_FFDC_Identifier", c.DisplayText),
                              c =>
            {
                Assert.Same(c, castCompletionItem);
                Assert.Equal("float", c.DisplayText);
                Assert.Equal("\uFFFD001_float", c.SortText);
                Assert.Equal("float", c.FilterText);
            });
        }
Ejemplo n.º 9
0
        public static async Task <IEnumerable <ISymbol> > GetCompletionSymbolsAsync(this Microsoft.CodeAnalysis.Completion.CompletionItem completionItem, IEnumerable <ISymbol> recommendedSymbols, Document document)
        {
            var properties = completionItem.Properties;

            // for SymbolCompletionProvider, use the logic of extracting information from recommended symbols
            if (properties.TryGetValue(Provider, out var provider) && provider == SymbolCompletionProvider)
            {
                return(recommendedSymbols.Where(x => x.Name == properties[SymbolName] && (int)x.Kind == int.Parse(properties[SymbolKind])).Distinct());
            }

            // if the completion provider encoded symbols into Properties, we can return them
            if (properties.ContainsKey(Symbols))
            {
                // the API to decode symbols is not public at the moment
                // http://source.roslyn.io/#Microsoft.CodeAnalysis.Features/Completion/Providers/SymbolCompletionItem.cs,93
                var decodedSymbolsTask = _getSymbolsAsync.InvokeStatic <Task <ImmutableArray <ISymbol> > >(new object[] { completionItem, document, default(CancellationToken) });
                if (decodedSymbolsTask != null)
                {
                    return(await decodedSymbolsTask);
                }
            }

            return(Enumerable.Empty <ISymbol>());
        }
Ejemplo n.º 10
0
 public static bool TryGetInsertionText(this Microsoft.CodeAnalysis.Completion.CompletionItem completionItem, out string insertionText)
 {
     return(completionItem.Properties.TryGetValue(InsertionText, out insertionText));
 }
Ejemplo n.º 11
0
 public static bool UseDisplayTextAsCompletionText(this Microsoft.CodeAnalysis.Completion.CompletionItem completionItem)
 {
     return(completionItem.Properties.TryGetValue(Provider, out var provider) &&
            (provider == NamedParameterCompletionProvider || provider == OverrideCompletionProvider || provider == ParitalMethodCompletionProvider));
 }
Ejemplo n.º 12
0
        public static bool IsObjectCreationCompletionItem(this Microsoft.CodeAnalysis.Completion.CompletionItem item)
        {
            var properties = item.Properties;

            return(properties.TryGetValue(Provider, out var provider) && provider == ObjectCreationCompletionProvider);
        }
Ejemplo n.º 13
0
 public static CompletionItem ToModel(
     this RoslynCompletionItem item,
     Dictionary <(string, int), ISymbol> recommendedSymbols,
Ejemplo n.º 14
0
 static int GetPriority(RoslynCompletionItem item)
 => item.Rules.SelectionBehavior == CompletionItemSelectionBehavior.HardSelection ? item.Rules.MatchPriority : MatchPriority.Default;