public static async Task <ImmutableArray <ISymbol> > GetRecommendedSymbolsAtPositionAsync( Document document, int position, OptionSet?options = null, CancellationToken cancellationToken = default) { var solution = document.Project.Solution; var semanticModel = await document.GetRequiredSemanticModelAsync(cancellationToken).ConfigureAwait(false); options ??= solution.Options; var context = document.GetRequiredLanguageService <ISyntaxContextService>().CreateContext(document, semanticModel, position, cancellationToken); var languageRecommender = document.GetRequiredLanguageService <IRecommendationService>(); return(languageRecommender.GetRecommendedSymbolsInContext(context, RecommendationServiceOptions.From(options, document.Project.Language), cancellationToken).NamedSymbols); }
public static IEnumerable <ISymbol> GetRecommendedSymbolsAtPosition( SemanticModel semanticModel, int position, Workspace workspace, OptionSet?options = null, CancellationToken cancellationToken = default) { var solution = workspace.CurrentSolution; options ??= solution.Options; var document = solution.GetRequiredDocument(semanticModel.SyntaxTree); var context = document.GetRequiredLanguageService <ISyntaxContextService>().CreateContext(document, semanticModel, position, cancellationToken); var languageRecommender = document.GetRequiredLanguageService <IRecommendationService>(); return(languageRecommender.GetRecommendedSymbolsInContext(context, RecommendationServiceOptions.From(options, document.Project.Language), cancellationToken).NamedSymbols); }
public RecommendedSymbols GetRecommendedSymbolsAtPosition(Document document, SemanticModel semanticModel, int position, RecommendationServiceOptions options, CancellationToken cancellationToken) { var context = CreateContext(document, semanticModel, position, cancellationToken); var result = CreateRunner(context, options.FilterOutOfScopeLocals, cancellationToken).GetRecommendedSymbols(); var namedSymbols = result.NamedSymbols; var unnamedSymbols = result.UnnamedSymbols; namedSymbols = namedSymbols.FilterToVisibleAndBrowsableSymbols(options.HideAdvancedMembers, semanticModel.Compilation); unnamedSymbols = unnamedSymbols.FilterToVisibleAndBrowsableSymbols(options.HideAdvancedMembers, semanticModel.Compilation); var shouldIncludeSymbolContext = new ShouldIncludeSymbolContext(context, cancellationToken); namedSymbols = namedSymbols.WhereAsArray(shouldIncludeSymbolContext.ShouldIncludeSymbol); unnamedSymbols = unnamedSymbols.WhereAsArray(shouldIncludeSymbolContext.ShouldIncludeSymbol); return(new RecommendedSymbols(namedSymbols, unnamedSymbols)); }
public RecommendedSymbols GetRecommendedSymbolsInContext(SyntaxContext syntaxContext, RecommendationServiceOptions options, CancellationToken cancellationToken) { var semanticModel = syntaxContext.SemanticModel; var result = CreateRunner((TSyntaxContext)syntaxContext, options.FilterOutOfScopeLocals, cancellationToken).GetRecommendedSymbols(); var namedSymbols = result.NamedSymbols; var unnamedSymbols = result.UnnamedSymbols; namedSymbols = namedSymbols.FilterToVisibleAndBrowsableSymbols(options.HideAdvancedMembers, semanticModel.Compilation); unnamedSymbols = unnamedSymbols.FilterToVisibleAndBrowsableSymbols(options.HideAdvancedMembers, semanticModel.Compilation); var shouldIncludeSymbolContext = new ShouldIncludeSymbolContext(syntaxContext, cancellationToken); namedSymbols = namedSymbols.WhereAsArray(shouldIncludeSymbolContext.ShouldIncludeSymbol); unnamedSymbols = unnamedSymbols.WhereAsArray(shouldIncludeSymbolContext.ShouldIncludeSymbol); return(new RecommendedSymbols(namedSymbols, unnamedSymbols)); }