public void ReportResult (SearchResult result)
		{
			try {
				outputPad.ReportResult (result);
			} catch (Exception ex) {
				LoggingService.LogError ("Error adding search result for file {0}:{1} to result pad:\n{2}",
				                         result.FileName, result.Offset, ex.ToString ());
			}
		}
Пример #2
0
		public void ReportResult (SearchResult result)
		{
			widget.Add (result);
		}
		DocumentLocation GetLocation (SearchResult searchResult)
		{
			var doc = GetDocument (searchResult);
			if (doc == null)
				return DocumentLocation.Empty;
			int lineNr = doc.OffsetToLineNumber (searchResult.Offset);
			var line = doc.GetLine (lineNr);
			if (line == null)
				return DocumentLocation.Empty;
			return new DocumentLocation (lineNr, searchResult.Offset - line.Offset + 1);
		}
		public void Add (SearchResult result)
		{
			newStore.InsertWithValues (ResultCount++, result, false);
		}
		TextEditor GetDocument (SearchResult result)
		{
			TextEditor doc;
			if (!documents.TryGetValue (result.FileName, out doc)) {
				var content = result.FileProvider.ReadString ();
				if (content == null)
					return null;

				doc = TextEditorFactory.CreateNewEditor (TextEditorFactory.CreateNewReadonlyDocument (new StringTextSource (content.ReadToEnd ()), result.FileName, DesktopService.GetMimeTypeForUri (result.FileName)));

				documents [result.FileName] = doc;	
			}
			return doc;
		}
		public override Task<IEnumerable<SearchResult>> FindAllReferences (string documentationCommentId, MonoDevelop.Projects.Project hintProject, CancellationToken token)
		{
			var workspace = TypeSystemService.Workspace as MonoDevelopWorkspace;
			if (workspace == null)
				return Task.FromResult (Enumerable.Empty<SearchResult> ());
			return Task.Run (async delegate {
				var antiDuplicatesSet = new HashSet<SearchResult> (new SearchResultComparer ());
				var result = new List<SearchResult> ();
				var lookup = await TryLookupSymbol (documentationCommentId, hintProject, token);
				if (!lookup.Success)
					return result;

				foreach (var simSym in SymbolFinder.FindSimilarSymbols (lookup.Symbol, lookup.Compilation)) {
					foreach (var loc in simSym.Locations) {
						if (!loc.IsInSource)
							continue;
						var sr = new SearchResult (new FileProvider (loc.SourceTree.FilePath), loc.SourceSpan.Start, loc.SourceSpan.Length);
						if (antiDuplicatesSet.Add (sr)) {
							result.Add (sr);
						}
					}

					foreach (var mref in await SymbolFinder.FindReferencesAsync (simSym, lookup.Solution).ConfigureAwait (false)) {
						foreach (var loc in mref.Locations) {
							var fileName = loc.Document.FilePath;
							var offset = loc.Location.SourceSpan.Start;
							string projectedName;
							int projectedOffset;
							if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) {
								fileName = projectedName;
								offset = projectedOffset;
							}

							var sr = new SearchResult (new FileProvider (fileName), offset, loc.Location.SourceSpan.Length);
							if (antiDuplicatesSet.Add (sr)) {
								result.Add (sr);
							}
						}
					}
				}
				return (IEnumerable<SearchResult>)result;
			});
		}
		public override Task<IEnumerable<SearchResult>> FindReferences (string documentationCommentId, MonoDevelop.Projects.Project hintProject, CancellationToken token)
		{
			return Task.Run (async delegate {
				var result = new List<SearchResult> ();
				var antiDuplicatesSet = new HashSet<SearchResult> (new SearchResultComparer ());
				foreach (var workspace in TypeSystemService.AllWorkspaces.OfType<MonoDevelopWorkspace> ()) {
					LookupResult lookup = null;

					foreach (var project in workspace.CurrentSolution.Projects) {
						lookup = await TryLookupSymbolInProject (project, documentationCommentId, token);
						if (lookup.Success)
							break;
					}

					if (lookup == null || !lookup.Success) {
						continue;
					}

					foreach (var loc in lookup.Symbol.Locations) {
						if (!loc.IsInSource)
							continue;
						var fileName = loc.SourceTree.FilePath;
						var offset = loc.SourceSpan.Start;
						string projectedName;
						int projectedOffset;
						if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) {
							fileName = projectedName;
							offset = projectedOffset;
						}
						var sr = new SearchResult (new FileProvider (fileName), offset, loc.SourceSpan.Length);
						antiDuplicatesSet.Add (sr);
						result.Add (sr);
					}

					foreach (var mref in await SymbolFinder.FindReferencesAsync (lookup.Symbol, lookup.Solution).ConfigureAwait (false)) {
						foreach (var loc in mref.Locations) {
							var fileName = loc.Document.FilePath;
							var offset = loc.Location.SourceSpan.Start;
							string projectedName;
							int projectedOffset;
							if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) {
								fileName = projectedName;
								offset = projectedOffset;
							}
							var sr = new SearchResult (new FileProvider (fileName), offset, loc.Location.SourceSpan.Length);
							if (antiDuplicatesSet.Add (sr)) {
								result.Add (sr);
							}
						}
					}
				}
				return (IEnumerable<SearchResult>)result;
			});
		}
Пример #8
0
 public void Add(SearchResult result)
 {
     newStore.InsertWithValues(ResultCount++, result, false);
 }