private void StartSearch(INavigateToCallback callback, string searchValue, IImmutableSet <string> kinds) { this.StopSearch(); if (string.IsNullOrWhiteSpace(searchValue)) { callback.Done(); return; } if (kinds == null || kinds.Count == 0) { kinds = KindsProvided; } var searchCurrentDocument = (callback.Options as INavigateToOptions2)?.SearchCurrentDocument ?? false; var roslynCallback = new NavigateToItemProviderCallback(_displayFactory, callback); var searcher = new NavigateToSearcher( _workspace.CurrentSolution, _asyncListener, roslynCallback, searchValue, searchCurrentDocument, kinds, _cancellationTokenSource.Token); _ = searcher.SearchAsync(); }
public override async Task <SymbolInformation[]?> HandleRequestAsync( WorkspaceSymbolParams request, RequestContext context, CancellationToken cancellationToken ) { Contract.ThrowIfNull(context.Solution); var solution = context.Solution; using var progress = BufferedProgress.Create(request.PartialResultToken); var searcher = NavigateToSearcher.Create( solution, _asyncListener, new LSPNavigateToCallback(progress), request.Query, searchCurrentDocument: false, s_supportedKinds, _threadingContext.DisposalToken ); await searcher.SearchAsync(cancellationToken).ConfigureAwait(false); return(progress.GetValues()); }
public async Task <GraphBuilder> GetGraphAsync(Solution solution, IGraphContext context, CancellationToken cancellationToken) { var graphBuilder = await GraphBuilder.CreateForInputNodesAsync(solution, context.InputNodes, cancellationToken).ConfigureAwait(false); var callback = new ProgressionNavigateToSearchCallback(context, graphBuilder); var searcher = NavigateToSearcher.Create( solution, _asyncListener, callback, _searchPattern, NavigateToUtilities.GetKindsProvided(solution), _threadingContext.DisposalToken); await searcher.SearchAsync(searchCurrentDocument : false, cancellationToken).ConfigureAwait(false); return(graphBuilder); }