internal override async Task <CompletionDescription> GetDescriptionWorkerAsync( Document document, CompletionItem item, CompletionOptions options, SymbolDescriptionOptions displayOptions, CancellationToken cancellationToken) { var position = SymbolCompletionItem.GetContextPosition(item); // What EditorBrowsable settings were we previously passed in (if it mattered)? if (item.Properties.TryGetValue(HideAdvancedMembers, out var hideAdvancedMembersString) && bool.TryParse(hideAdvancedMembersString, out var hideAdvancedMembers)) { options = options with { HideAdvancedMembers = hideAdvancedMembers }; } var(token, semanticModel, symbols) = await GetSymbolsAsync(document, position, options, cancellationToken).ConfigureAwait(false); if (symbols.Length == 0) { return(CompletionDescription.Empty); } Contract.ThrowIfNull(semanticModel); var name = SymbolCompletionItem.GetSymbolName(item); var kind = SymbolCompletionItem.GetKind(item); var bestSymbols = symbols.WhereAsArray(s => s.Kind == kind && s.Name == name); return(await SymbolCompletionItem.GetDescriptionAsync(item, bestSymbols, document, semanticModel, displayOptions, cancellationToken).ConfigureAwait(false)); }
protected override async Task <CompletionDescription> GetDescriptionWorkerAsync( Document document, CompletionItem item, CancellationToken cancellationToken) { var position = SymbolCompletionItem.GetContextPosition(item); var name = SymbolCompletionItem.GetSymbolName(item); var kind = SymbolCompletionItem.GetKind(item); var relatedDocumentIds = document.Project.Solution.GetRelatedDocumentIds(document.Id).Concat(document.Id); var options = document.Project.Solution.Workspace.Options; var totalSymbols = await base.GetPerContextSymbols(document, position, options, relatedDocumentIds, preselect : false, cancellationToken : cancellationToken).ConfigureAwait(false); foreach (var info in totalSymbols) { var bestSymbols = info.symbols.Where(s => kind != null && s.Kind == kind && s.Name == name).ToImmutableArray(); if (bestSymbols.Any()) { return(await SymbolCompletionItem.GetDescriptionAsync(item, bestSymbols, document, info.syntaxContext.SemanticModel, cancellationToken).ConfigureAwait(false)); } } return(CompletionDescription.Empty); }
protected override async Task <CompletionDescription> GetDescriptionWorkerAsync(Document document, CompletionItem item, CancellationToken cancellationToken) { var position = SymbolCompletionItem.GetContextPosition(item); // What EditorBrowsable settings were we previously passed in (if it mattered)? bool hideAdvancedMembers = false; if (item.Properties.TryGetValue(HideAdvancedMembers, out var hideAdvancedMembersString)) { bool.TryParse(hideAdvancedMembersString, out hideAdvancedMembers); } var options = document.Project.Solution.Workspace.Options .WithChangedOption(new OptionKey(CompletionOptions.HideAdvancedMembers, document.Project.Language), hideAdvancedMembers); var(token, semanticModel, symbols) = await GetSymbolsAsync(document, position, options, cancellationToken).ConfigureAwait(false); var name = SymbolCompletionItem.GetSymbolName(item); var kind = SymbolCompletionItem.GetKind(item); var bestSymbols = symbols.WhereAsArray(s => s.Kind == kind && s.Name == name); return(await SymbolCompletionItem.GetDescriptionAsync(item, bestSymbols, document, semanticModel, cancellationToken).ConfigureAwait(false)); }