diff --git a/crates/search/src/project_search.rs b/crates/search/src/project_search.rs index 9014f1764d7a6097908624e0d93bc6174e998445..7939358441881f84da4648709870a8ad60ea1f65 100644 --- a/crates/search/src/project_search.rs +++ b/crates/search/src/project_search.rs @@ -13,7 +13,7 @@ use editor::{ items::active_match_index, multibuffer_context_lines, }; -use futures::{StreamExt, stream::FuturesOrdered}; +use futures::StreamExt; use gpui::{ Action, AnyElement, AnyView, App, Axis, Context, Entity, EntityId, EventEmitter, FocusHandle, Focusable, Global, Hsla, InteractiveElement, IntoElement, KeyContext, ParentElement, Point, @@ -321,44 +321,35 @@ impl ProjectSearch { let mut limit_reached = false; while let Some(results) = matches.next().await { - let mut buffers_with_ranges = Vec::with_capacity(results.len()); for result in results { match result { project::search::SearchResult::Buffer { buffer, ranges } => { - buffers_with_ranges.push((buffer, ranges)); + let new_ranges = project_search + .update(cx, |project_search, cx| { + project_search.excerpts.update(cx, |excerpts, cx| { + excerpts.set_anchored_excerpts_for_path( + buffer, + ranges, + multibuffer_context_lines(cx), + cx, + ) + }) + }) + .ok()? + .await; + + project_search + .update(cx, |project_search, cx| { + project_search.match_ranges.extend(new_ranges); + cx.notify(); + }) + .ok()?; } project::search::SearchResult::LimitReached => { limit_reached = true; } } } - - let mut new_ranges = project_search - .update(cx, |project_search, cx| { - project_search.excerpts.update(cx, |excerpts, cx| { - buffers_with_ranges - .into_iter() - .map(|(buffer, ranges)| { - excerpts.set_anchored_excerpts_for_path( - buffer, - ranges, - multibuffer_context_lines(cx), - cx, - ) - }) - .collect::>() - }) - }) - .ok()?; - - while let Some(new_ranges) = new_ranges.next().await { - project_search - .update(cx, |project_search, cx| { - project_search.match_ranges.extend(new_ranges); - cx.notify(); - }) - .ok()?; - } } project_search