public Searcher( Solution solution, IAsynchronousOperationListener asyncListener, INavigateToItemDisplayFactory displayFactory, INavigateToCallback callback, string searchPattern, bool searchCurrentDocument, CancellationToken cancellationToken) { _solution = solution; _displayFactory = displayFactory; _callback = callback; _searchPattern = searchPattern; _searchCurrentDocument = searchCurrentDocument; _cancellationToken = cancellationToken; _progress = new ProgressTracker(callback.ReportProgress); _asyncListener = asyncListener; if (_searchCurrentDocument) { var documentService = _solution.Workspace.Services.GetService<IDocumentTrackingService>(); var activeId = documentService.GetActiveDocument(); _currentDocument = activeId != null ? _solution.GetDocument(activeId) : null; } }
public void StartSearch(INavigateToCallback callback, string searchValue) { this.StopSearch(); if (string.IsNullOrWhiteSpace(searchValue)) { callback.Done(); return; } var optionsService = _optionsServices.Length > 0 ? VersionSelector.SelectHighest(_optionsServices) : null; var searchCurrentDocument = optionsService?.GetSearchCurrentDocument(callback.Options) ?? false; var searcher = new Searcher( _workspace.CurrentSolution, _asyncListener, _displayFactory, callback, searchValue, searchCurrentDocument, _cancellationTokenSource.Token); searcher.Search(); }
public LibraryNodeVisitor(PythonToolsService pyService, PythonNavigateToItemProvider itemProvider, INavigateToCallback navCallback, string searchValue) { _pyService = pyService; _itemProvider = itemProvider; _navCallback = navCallback; _searchValue = searchValue; _path.Push(null); _comparer = new FuzzyStringMatcher(_pyService.AdvancedOptions.SearchMode); _regexComparer = new FuzzyStringMatcher(FuzzyMatchMode.RegexIgnoreCase); }
public void StartSearch(INavigateToCallback callback, string searchValue) { if (searchValue.Length > 0 && (searchValue[0] == '.' || searchValue[0] == '#')) { CssParser parser = new CssParser(); var state = new Tuple<CssParser, string, INavigateToCallback>(parser, searchValue, callback); System.Threading.ThreadPool.QueueUserWorkItem(DoWork, state); } }
internal Worker(CssGoToLineProviderFactory providerFactory, INavigateToCallback navigateToCallback, string searchValue) { _providerFactory = providerFactory; _searchValue = searchValue; _navigateToCallback = navigateToCallback; _cancellationTokenSource = new CancellationTokenSource(); _cancellationToken = _cancellationTokenSource.Token; ThreadPool.QueueUserWorkItem(DoWork, null); }
public void StartSearch(INavigateToCallback callback, string searchValue) { //string name = null; //string kind = null; //string language = null; //string secondarySort = null; //object tag = null; //MatchKind matchKind = MatchKind.None; //INavigateToItemDisplayFactory displayFactory = null; //NavigateToItem item = new NavigateToItem(name, kind, language, secondarySort, tag, matchKind, displayFactory); }
public void StartSearch(INavigateToCallback callback, string searchValue) { var packageServiceProvider = (IServiceProvider)_package; var libraryManager = (LibraryManager)packageServiceProvider.GetService(_package.GetLibraryManagerType()); var library = libraryManager.Library; if (_searchCts != null) { _searchCts.Dispose(); } _searchCts = new CancellationTokenSource(); _searchTask = Task.Factory.StartNew(() => library.VisitNodes(new LibraryNodeVisitor(this, callback, searchValue), _searchCts.Token), _searchCts.Token); }
private bool GetSearchCurrentDocumentOption(INavigateToCallback callback) { try { return(GetSearchCurrentDocumentOptionWorker(callback)); } catch (TypeLoadException) { // The version of the APIs we call in VS may not match what the // user currently has on the box (as the APIs have changed during // the VS15 timeframe. Be resilient to this happening and just // default to searching all documents. return(false); } }
private bool GetSearchCurrentDocumentOption(INavigateToCallback callback) { try { return GetSearchCurrentDocumentOptionWorker(callback); } catch (TypeLoadException) { // The version of the APIs we call in VS may not match what the // user currently has on the box (as the APIs have changed during // the VS15 timeframe. Be resilient to this happening and just // default to searching all documents. return false; } }
public Searcher( Solution solution, IAsynchronousOperationListener asyncListener, ItemDisplayFactory displayFactory, INavigateToCallback callback, string searchPattern, CancellationToken cancellationToken) { _solution = solution; _displayFactory = displayFactory; _callback = callback; _searchPattern = searchPattern; _cancellationToken = cancellationToken; _progress = new ProgressTracker(callback.ReportProgress); _asyncListener = asyncListener; }
public Searcher( Solution solution, IAsynchronousOperationListener asyncListener, ItemDisplayFactory displayFactory, INavigateToCallback callback, string searchPattern, CancellationToken cancellationToken) { _solution = solution; _displayFactory = displayFactory; _callback = callback; _searchPattern = searchPattern; _cancellationToken = cancellationToken; _progress = new ProgressTracker(callback.ReportProgress); _asyncListener = asyncListener; }
public NavigateToVisitor( string searchValue, ITextSnapshot snapshot, IWpfTextView textView, INavigateToCallback callback, IBufferGraphFactoryService bufferGraphFactoryService, INavigateToItemDisplayFactory displayFactory, DispatcherGlyphService glyphService, CancellationToken cancellationToken) { _searchValue = searchValue; _snapshot = snapshot; _textView = textView; _callback = callback; _bufferGraphFactoryService = bufferGraphFactoryService; _displayFactory = displayFactory; _glyphService = glyphService; _cancellationToken = cancellationToken; }
public NavigateToVisitor( string searchValue, ITextSnapshot snapshot, IWpfTextView textView, INavigateToCallback callback, IBufferGraphFactoryService bufferGraphFactoryService, INavigateToItemDisplayFactory displayFactory, DispatcherGlyphService glyphService, CancellationToken cancellationToken) { _searchValue = searchValue; _snapshot = snapshot; _textView = textView; _callback = callback; _bufferGraphFactoryService = bufferGraphFactoryService; _displayFactory = displayFactory; _glyphService = glyphService; _cancellationToken = cancellationToken; }
public async void StartSearch(INavigateToCallback callback, string searchValue) { CancellationTokenSource searchCts = null; if (_library == null) { callback.Done(); return; } try { searchCts = new CancellationTokenSource(); var oldCts = Interlocked.Exchange(ref _searchCts, searchCts); try { oldCts?.Cancel(); oldCts?.Dispose(); } catch (ObjectDisposedException) { } CancellationToken token; try { token = searchCts.Token; } catch (ObjectDisposedException) { // highly unlikely race, but easy enough to protect against return; } await _library.VisitNodesAsync( new LibraryNodeVisitor(this, callback, searchValue, _matchMode), token ); } catch (OperationCanceledException) { } catch (Exception ex) when(!ex.IsCriticalException()) { ex.ReportUnhandledException(_serviceProvider, GetType()); } finally { callback.Done(); if (searchCts != null) { Interlocked.CompareExchange(ref _searchCts, null, searchCts); searchCts.Dispose(); } } }
public void StartSearch(INavigateToCallback callback, string searchValue) { this.StopSearch(); if (string.IsNullOrWhiteSpace(searchValue)) { callback.Done(); return; } var searcher = new Searcher( _workspace.CurrentSolution, _asyncListener, _displayFactory, callback, searchValue, _cancellationTokenSource.Token); searcher.Search(); }
public void StartSearch(INavigateToCallback callback, string searchValue) { this.StopSearch(); if (string.IsNullOrWhiteSpace(searchValue)) { callback.Done(); return; } var searcher = new Searcher( _workspace.CurrentSolution, _asyncListener, _displayFactory, callback, searchValue, _cancellationTokenSource.Token); searcher.Search(); }
private async Task FindMatchesAsync(INavigateToCallback callback, string searchValue, CancellationToken token) { var matcher = _services.PatternMatcherFactory.CreatePatternMatcher( searchValue, new PatternMatcherCreationOptions(CultureInfo.CurrentUICulture, PatternMatcherCreationFlags.AllowFuzzyMatching | PatternMatcherCreationFlags.AllowSimpleSubstringMatching) ); var opts = GetMemberOptions.NoMemberRecursion | GetMemberOptions.IntersectMultipleResults | GetMemberOptions.DetailedInformation; foreach (var a in _analyzers) { a.Task = a.Analyzer.SendRequestAsync(new AP.GetAllMembersRequest { options = opts }); } foreach (var a in _analyzers) { a.Result = await a.Task; } token.ThrowIfCancellationRequested(); int progress = 0; int total = _analyzers.Sum(r => r.Result?.completions?.Length ?? 0); foreach (var a in _analyzers) { token.ThrowIfCancellationRequested(); if ((a.Result?.completions?.Length ?? 0) == 0) { continue; } foreach (var res in FilterResults(a.ProjectName, a.Result.completions, matcher)) { callback.AddItem(res); } progress += a.Result.completions.Length; callback.ReportProgress(progress, total); } }
public void StartSearch(INavigateToCallback callback, string searchValue) { var libraryManager = (LibraryManager)_serviceProvider.GetService(typeof(IPythonLibraryManager)); var library = libraryManager.Library; var searchCts = new CancellationTokenSource(); var oldCts = Interlocked.Exchange(ref _searchCts, searchCts); if (oldCts != null) { oldCts.Dispose(); } var pyService = _serviceProvider.GetPythonToolsService(); Task.Run(() => { try { library.VisitNodes(new LibraryNodeVisitor(pyService, this, callback, searchValue), searchCts.Token); } finally { callback.Done(); } }).HandleAllExceptions(SR.ProductName, GetType()).DoNotWait(); }
public void StartSearch(INavigateToCallback callback, string searchValue) { var textView = GetCurrentTextView(); if (textView == null) { callback.Done(); return; } var cancellationTokenSource = new CancellationTokenSource(); _searchCancellationTokenSource = cancellationTokenSource; var cancellationToken = cancellationTokenSource.Token; var snapshot = textView.TextSnapshot; Task.Run(() => { try { var syntaxTree = snapshot.GetSyntaxTree(cancellationToken); var visitor = new NavigateToVisitor( searchValue, snapshot, textView, callback, _bufferGraphFactoryService, _navigateToItemProviderFactory, _glyphService, cancellationToken); visitor.Visit(syntaxTree.Root); } catch (OperationCanceledException) { } finally { callback.Done(); } }, cancellationToken); }
private async Task FindMatchesAsync(INavigateToCallback callback, string searchValue, CancellationToken token) { var matchers = new List<Tuple<FuzzyStringMatcher, string, MatchKind>> { Tuple.Create(new FuzzyStringMatcher(FuzzyMatchMode.Prefix), searchValue, MatchKind.Prefix), Tuple.Create(new FuzzyStringMatcher(_matchMode), searchValue, MatchKind.Regular) }; if (searchValue.Length > 2 && searchValue.StartsWith("/") && searchValue.EndsWith("/")) { matchers.Insert(0, Tuple.Create( new FuzzyStringMatcher(FuzzyMatchMode.RegexIgnoreCase), searchValue.Substring(1, searchValue.Length - 2), MatchKind.Regular )); } var opts = GetMemberOptions.NoMemberRecursion | GetMemberOptions.IntersectMultipleResults | GetMemberOptions.DetailedInformation; foreach (var a in _analyzers) { a.Task = a.Analyzer.SendRequestAsync(new AP.GetAllMembersRequest { options = opts }); } foreach (var a in _analyzers) { a.Result = await a.Task; } token.ThrowIfCancellationRequested(); int progress = 0; int total = _analyzers.Sum(r => r.Result?.completions?.Length ?? 0); foreach (var a in _analyzers) { token.ThrowIfCancellationRequested(); if (a.Result?.completions?.Length == 0) { continue; } foreach (var res in FilterResults(a.ProjectName, a.Result.completions, matchers)) { callback.AddItem(res); } progress += a.Result.completions.Length; callback.ReportProgress(progress, total); } }
public void StartSearch(INavigateToCallback callback, string searchValue) { var textView = GetCurrentTextView(); if (textView == null) { callback.Done(); return; } var cancellationTokenSource = new CancellationTokenSource(); _searchCancellationTokenSource = cancellationTokenSource; var cancellationToken = cancellationTokenSource.Token; var snapshot = textView.TextSnapshot; Task.Run(() => { try { var syntaxTree = snapshot.GetSyntaxTree(cancellationToken); var visitor = new NavigateToVisitor( searchValue, snapshot, textView, callback, _bufferGraphFactoryService, _navigateToItemProviderFactory, _glyphService, cancellationToken); visitor.Visit(syntaxTree.Root); } catch (OperationCanceledException) { } finally { callback.Done(); } }, cancellationToken); }
private void Search(INavigateToCallback callback, string searchValue) { var i = 0; foreach (var file in Util.GetSolutionAllSdmapFiles(_serviceProvider)) { if (_cancellationTokenSource.IsCancellationRequested) { break; } i += 1; foreach (var match in SdmapIdListener.FindMatches(file, searchValue)) { callback.AddItem(match.ToNavigateToItem(_navigateToItemDisplayFactory)); } callback.ReportProgress(i, Math.Max(100, i + 1)); } callback.Done(); }
private bool GetSearchCurrentDocumentOptionWorker(INavigateToCallback callback) { // INavigateToOptions2, in VS2017, has a SearchCurrentDocument property. var navigateToOptions = callback.Options; try { var interfaceType = navigateToOptions.GetType().GetInterface("INavigateToOptions2"); if (interfaceType != null) { var searchCurrentDocumentProperty = interfaceType.GetProperty("SearchCurrentDocument"); if (searchCurrentDocumentProperty != null) { return((bool)searchCurrentDocumentProperty.GetValue(navigateToOptions)); } } return(false); } catch { return(false); } }
public void StartSearch(INavigateToCallback callback, string searchValue, INavigateToFilterParameters filter) { StartSearch(callback, searchValue, filter.Kinds); }
internal void StartSearch(NitraNavigateToItemProvider nitraNavigateToItemProvider, INavigateToCallback callback, string pattern, bool hideExternalItems, bool searchCurrentDocument, ISet <string> kinds) { _callback = callback; _nitraNavigateToItemProvider = nitraNavigateToItemProvider; // TODO: find curent ProjectId for active file // TODO: Add support for 'searchCurrentDocument' Client.Send(new ClientMessage.FindDeclarations(pattern, ProjectId.Invalid, hideExternalItems, kinds.ToImmutableArray())); }
void INavigateToItemProvider.StartSearch(INavigateToCallback callback, string searchValue) { _searchText = searchValue; _threadCommunicator.StartSearch(searchValue); callback.Done(); }
public void StartSearch(INavigateToCallback callback, string searchValue, INavigateToFilterParameters filter) { var options = (INavigateToOptions2)callback.Options; StartSearch(callback, searchValue, options.HideExternalItems, options.SearchCurrentDocument, filter.Kinds); }
void INavigateToItemProvider.StartSearch(INavigateToCallback callback, string searchValue) { _threadCommunicator.StartSearch(); }
public NavigateToItemProviderCallback(INavigateToItemDisplayFactory displayFactory, INavigateToCallback callback) { _displayFactory = displayFactory; _callback = callback; }
public LibraryNodeVisitor(JNavigateToItemProvider itemProvider, INavigateToCallback navCallback, string searchValue) { _itemProvider = itemProvider; _navCallback = navCallback; _searchValue = searchValue; _path.Push(null); _comparer = new FuzzyStringMatcher(JToolsPackage.Instance.AdvancedEditorOptionsPage.SearchMode); _regexComparer = new FuzzyStringMatcher(FuzzyMatchMode.RegexIgnoreCase); }
public void StartSearch(INavigateToCallback callback, string searchValue) { throw new NotImplementedException(); }
internal void StopSearch() { _callback = null; _nitraNavigateToItemProvider = null; }
private bool GetSearchCurrentDocumentOptionWorker(INavigateToCallback callback) { var options2 = callback.Options as INavigateToOptions2; return(options2?.SearchCurrentDocument ?? false); }
public void StartSearch(INavigateToCallback callback, string searchValue) { Debug.Assert(_currentWorker == null); if (searchValue.Length > 0 && (searchValue[0] == '.' || searchValue[0] == '#')) { _currentWorker = new Worker(_owner, callback, searchValue); } else { callback.Done(); } }
public LibraryNodeVisitor(PythonToolsService pyService, PythonNavigateToItemProvider itemProvider, INavigateToCallback navCallback, string searchValue) { _pyService = pyService; _itemProvider = itemProvider; _navCallback = navCallback; _searchValue = searchValue; _path.Push(null); _comparer = new FuzzyStringMatcher(_pyService.AdvancedOptions.SearchMode); _regexComparer = new FuzzyStringMatcher(FuzzyMatchMode.RegexIgnoreCase); }
private bool GetSearchCurrentDocumentOptionWorker(INavigateToCallback callback) { var optionsService = _optionsServices.Length > 0 ? VersionSelector.SelectHighest(_optionsServices) : null; var searchCurrentDocument = optionsService?.GetSearchCurrentDocument(callback.Options) ?? false; return searchCurrentDocument; }
public void StartSearch(INavigateToCallback callback, string searchValue) { StartSearch(callback, searchValue, true, false, new SortedSet <string>()); }
public void StartSearch(INavigateToCallback callback, string searchValue) { var libraryManager = (LibraryManager)_serviceProvider.GetService(typeof(IPythonLibraryManager)); var library = libraryManager.Library; var searchCts = new CancellationTokenSource(); var oldCts = Interlocked.Exchange(ref _searchCts, searchCts); if (oldCts != null) { oldCts.Dispose(); } var pyService = _serviceProvider.GetPythonToolsService(); Task.Run(() => { try { library.VisitNodes(new LibraryNodeVisitor(pyService, this, callback, searchValue), searchCts.Token); } finally { callback.Done(); } }).HandleAllExceptions(_serviceProvider, GetType()).DoNotWait(); }
public void StartSearch(INavigateToCallback callback, string searchValue, INavigateToFilterParameters filter) => StartSearch(callback, searchValue, filter.Kinds.ToImmutableHashSet(StringComparer.Ordinal));
public void StartSearch(INavigateToCallback callback, string searchValue) => StartSearch(callback, searchValue, KindsProvided);
void INavigateToItemProvider.StartSearch(INavigateToCallback callback, string searchValue) { _searchText = searchValue; _threadCommunicator.StartSearch(searchValue); callback.Done(); }