/// <summary> /// Filters the initial result set by determining which entries actually resolve back to our declaration target. /// </summary> private IDictionary <String, List <SearchMatch> > ResolveActualMatches(FRResults results, ASResult target) { // this will hold actual references back to the source member (some result hits could point to different members with the same name) IDictionary <String, List <SearchMatch> > actualMatches = new Dictionary <String, List <SearchMatch> >(); IDictionary <String, List <SearchMatch> > initialResultsList = RefactoringHelper.GetInitialResultsList(results); int matchesChecked = 0; int totalMatches = 0; foreach (KeyValuePair <String, List <SearchMatch> > entry in initialResultsList) { totalMatches += entry.Value.Count; } Boolean foundDeclarationSource = false; bool optionsEnabled = IncludeComments || IncludeStrings; foreach (KeyValuePair <String, List <SearchMatch> > entry in initialResultsList) { String currentFileName = entry.Key; UserInterfaceManager.ProgressDialog.UpdateStatusMessage(TextHelper.GetString("Info.ResolvingReferencesIn") + " \"" + currentFileName + "\""); foreach (SearchMatch match in entry.Value) { // we have to open/reopen the entry's file // there are issues with evaluating the declaration targets with non-open, non-current files // we have to do it each time as the process of checking the declaration source can change the currently open file! ScintillaControl sci = this.AssociatedDocumentHelper.LoadDocument(currentFileName).SciControl; // if the search result does point to the member source, store it bool add = false; if (RefactoringHelper.DoesMatchPointToTarget(sci, match, target, this.AssociatedDocumentHelper)) { if (ignoreDeclarationSource && !foundDeclarationSource && RefactoringHelper.IsMatchTheTarget(sci, match, target)) { //ignore the declaration source foundDeclarationSource = true; } else { add = true; } } else if (optionsEnabled) { add = RefactoringHelper.IsInsideCommentOrString(match, sci, IncludeComments, IncludeStrings); } if (add) { if (!actualMatches.ContainsKey(currentFileName)) { actualMatches.Add(currentFileName, new List <SearchMatch>()); } actualMatches[currentFileName].Add(match); } matchesChecked++; UserInterfaceManager.ProgressDialog.UpdateProgress((100 * matchesChecked) / totalMatches); } } this.AssociatedDocumentHelper.CloseTemporarilyOpenedDocuments(); return(actualMatches); }