From 77e00a288691c6fb2a6e7809efe96455e9a12146 Mon Sep 17 00:00:00 2001 From: can1357 Date: Thu, 18 Jun 2026 01:57:28 +0200 Subject: [PATCH] feat(pi-natives): tracked searched files count in parallel grep status - Added a `files_searched` atomic counter to `run_parallel_search` to track the total number of files processed. - Increments the search counter during parallel execution immediately after a file is successfully read. - Short-circuits and filters out file search results that yield zero matches. --- crates/pi-natives/src/grep.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/pi-natives/src/grep.rs b/crates/pi-natives/src/grep.rs index 54ba78522..d20680f8c 100644 --- a/crates/pi-natives/src/grep.rs +++ b/crates/pi-natives/src/grep.rs @@ -1264,6 +1264,7 @@ fn run_parallel_search( matcher: &grep_regex::RegexMatcher, params: SearchParams, skipped_oversized: &AtomicU64, + files_searched: &AtomicU64, ) -> Vec { let file_params = per_file_params(params); let raw: Vec> = entries @@ -1279,6 +1280,7 @@ fn run_parallel_search( }, ReadFile::Skipped => return None, }; + files_searched.fetch_add(1, Ordering::Relaxed); let search = if file_params.mode == OutputMode::FilesWithMatches { let matched = matcher.is_match(bytes.as_slice()).ok()?; SearchResultInternal { @@ -1290,6 +1292,9 @@ fn run_parallel_search( } else { run_search_slice(searcher, matcher, bytes.as_slice(), file_params).ok()? }; + if search.match_count == 0 { + return None; + } Some(FileSearchResult { relative_path: entry.relative_path.clone(), matches: search.matches,