search modal v1

This commit is contained in:
Matt Parker
2025-09-23 22:08:35 +10:00
parent dd06686f16
commit 6a95ea892c
7 changed files with 101 additions and 1 deletions

View File

@@ -0,0 +1,29 @@
using System.Collections.Concurrent;
using System.IO.MemoryMappedFiles;
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
namespace SharpIDE.Application.Features.Search;
public static class SearchService
{
public static async Task FindInFiles(SharpIdeSolutionModel solutionModel, string searchTerm)
{
if (searchTerm.Length < 4)
{
return;
}
var files = solutionModel.AllFiles;
ConcurrentBag<string> results = [];
await Parallel.ForEachAsync(files, async (file, ct) =>
{
await foreach (var (index, line) in File.ReadLinesAsync(file.Path, ct).Index().WithCancellation(ct))
{
if (line.Contains(searchTerm, StringComparison.OrdinalIgnoreCase))
{
results.Add($"{file.Path} (Line {index + 1}): {line.Trim()}");
}
}
}
);
}
}