public static CompletionItem Create( string displayText, TextSpan span, Glyph?glyph, DeclarationModifiers modifiers, int line, ISymbol symbol, SyntaxToken token, int descriptionPosition, CompletionItemRules rules) { var props = ImmutableDictionary <string, string> .Empty .Add("Line", line.ToString()) .Add("Modifiers", modifiers.ToString()) .Add("TokenSpanEnd", token.Span.End.ToString()); return(SymbolCompletionItem.Create( displayText: displayText, span: span, symbol: symbol, glyph: glyph, descriptionPosition: descriptionPosition, properties: props, rules: rules)); }
public override async Task ProvideCompletionsAsync(CompletionContext context) { var document = context.Document; var position = context.Position; var cancellationToken = context.CancellationToken; var workspace = document.Project.Solution.Workspace; var semanticModel = await document.GetSemanticModelForSpanAsync(new TextSpan(position, length : 0), cancellationToken).ConfigureAwait(false); var typeAndLocation = GetInitializedType(document, semanticModel, position, cancellationToken); if (typeAndLocation == null) { return; } var initializedType = typeAndLocation.Item1 as INamedTypeSymbol; var initializerLocation = typeAndLocation.Item2; if (initializedType == null) { return; } if (await IsExclusiveAsync(document, position, cancellationToken).ConfigureAwait(false)) { context.IsExclusive = true; } var enclosing = semanticModel.GetEnclosingNamedType(position, cancellationToken); // Find the members that can be initialized. If we have a NamedTypeSymbol, also get the overridden members. IEnumerable <ISymbol> members = semanticModel.LookupSymbols(position, initializedType); members = members.Where(m => IsInitializable(m, enclosing) && m.CanBeReferencedByName && IsLegalFieldOrProperty(m, enclosing) && !m.IsImplicitlyDeclared); // Filter out those members that have already been typed var alreadyTypedMembers = GetInitializedMembers(semanticModel.SyntaxTree, position, cancellationToken); var uninitializedMembers = members.Where(m => !alreadyTypedMembers.Contains(m.Name)); uninitializedMembers = uninitializedMembers.Where(m => m.IsEditorBrowsable(document.ShouldHideAdvancedMembers(), semanticModel.Compilation)); var text = await semanticModel.SyntaxTree.GetTextAsync(cancellationToken).ConfigureAwait(false); foreach (var uninitializedMember in uninitializedMembers) { context.AddItem(SymbolCompletionItem.Create( displayText: uninitializedMember.Name, insertionText: null, span: context.DefaultItemSpan, symbol: uninitializedMember, descriptionPosition: initializerLocation.SourceSpan.Start, rules: s_rules )); } }
private CompletionItem CreateCompletionItem( INamedTypeSymbol symbol, SyntaxContext context) { var displayAndInsertionText = GetDisplayAndInsertionText(symbol, context); return(SymbolCompletionItem.Create( displayText: displayAndInsertionText.Item1, insertionText: displayAndInsertionText.Item2, symbol: symbol, contextPosition: context.Position, properties: GetProperties(symbol, context), rules: CompletionItemRules.Default)); }
protected virtual CompletionItem CreateItem(string displayText, string insertionText, int position, List <ISymbol> symbols, AbstractSyntaxContext context, TextSpan span, bool preselect, SupportedPlatformData supportedPlatformData) { return(SymbolCompletionItem.Create( displayText: displayText, insertionText: insertionText, filterText: GetFilterText(symbols[0], displayText, context), span: span, contextPosition: context.Position, descriptionPosition: position, symbols: symbols, supportedPlatforms: supportedPlatformData, preselect: preselect, rules: GetCompletionItemRules(symbols, context))); }
protected override CompletionItem CreateItem(string displayText, string insertionText, int position, List <ISymbol> symbols, AbstractSyntaxContext context, TextSpan span, bool preselect, SupportedPlatformData supportedPlatformData) { return(SymbolCompletionItem.Create( displayText: displayText, insertionText: insertionText, filterText: GetFilterText(symbols[0], displayText, context), span: span, contextPosition: context.Position, descriptionPosition: position, symbols: symbols, supportedPlatforms: supportedPlatformData, matchPriority: MatchPriority.Preselect, // Always preselect tags: s_Tags, rules: GetCompletionItemRules(symbols, context))); }
protected virtual CompletionItem CreateItem( string displayText, string insertionText, List <ISymbol> symbols, SyntaxContext context, bool preselect, SupportedPlatformData supportedPlatformData) { return(SymbolCompletionItem.Create( displayText: displayText, insertionText: insertionText, filterText: GetFilterText(symbols[0], displayText, context), contextPosition: context.Position, symbols: symbols, supportedPlatforms: supportedPlatformData, matchPriority: preselect ? MatchPriority.Preselect : MatchPriority.Default, rules: GetCompletionItemRules(symbols, context))); }
protected override CompletionItem CreateItem(string displayText, string insertionText, List <ISymbol> symbols, SyntaxContext context, bool preselect, SupportedPlatformData supportedPlatformData) { var matchPriority = preselect ? ComputeSymbolMatchPriority(symbols[0]) : MatchPriority.Default; var rules = GetCompletionItemRules(symbols, context, preselect); if (preselect) { rules = rules.WithSelectionBehavior(PreselectedItemSelectionBehavior); } return(SymbolCompletionItem.Create( displayText: displayText, insertionText: insertionText, filterText: GetFilterText(symbols[0], displayText, context), contextPosition: context.Position, symbols: symbols, supportedPlatforms: supportedPlatformData, matchPriority: matchPriority, rules: rules)); }