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)); }
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)); }
public static string GetKind(this RoslynCompletionItem completionItem) { foreach (var tag in KindTags) { if (completionItem.Tags.Contains(tag)) { return(tag); } } return(null); }
public MatchResult( RoslynCompletionItem roslynCompletionItem, TEditorCompletionItem editorCompletionItem, bool matchedFilterText, PatternMatch?patternMatch, int index) { RoslynCompletionItem = roslynCompletionItem; EditorCompletionItem = editorCompletionItem; MatchedFilterText = matchedFilterText; PatternMatch = patternMatch; _indexInOriginalSortedOrder = index; }
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; }
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); }
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); }); }
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>()); }
public static bool TryGetInsertionText(this Microsoft.CodeAnalysis.Completion.CompletionItem completionItem, out string insertionText) { return(completionItem.Properties.TryGetValue(InsertionText, out insertionText)); }
public static bool UseDisplayTextAsCompletionText(this Microsoft.CodeAnalysis.Completion.CompletionItem completionItem) { return(completionItem.Properties.TryGetValue(Provider, out var provider) && (provider == NamedParameterCompletionProvider || provider == OverrideCompletionProvider || provider == ParitalMethodCompletionProvider)); }
public static bool IsObjectCreationCompletionItem(this Microsoft.CodeAnalysis.Completion.CompletionItem item) { var properties = item.Properties; return(properties.TryGetValue(Provider, out var provider) && provider == ObjectCreationCompletionProvider); }
public static CompletionItem ToModel( this RoslynCompletionItem item, Dictionary <(string, int), ISymbol> recommendedSymbols,
static int GetPriority(RoslynCompletionItem item) => item.Rules.SelectionBehavior == CompletionItemSelectionBehavior.HardSelection ? item.Rules.MatchPriority : MatchPriority.Default;