diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index dc4ded40dbef2a..e5b60496456358 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -4802,6 +4802,7 @@ impl Editor { Some(cx.background_spawn(async move { let mut ranges = Vec::new(); let query = buffer.text_for_range(selection.range()).collect::(); + let selection_anchors = selection.range().to_anchors(&buffer); for range in [buffer.anchor_before(0)..buffer.anchor_after(buffer.len())] { for (search_buffer, search_range, excerpt_id) in buffer.range_to_buffer_ranges(range) @@ -4820,17 +4821,22 @@ impl Editor { .search(search_buffer, Some(search_range.clone())) .await .into_iter() - .map(|match_range| { - let start = search_buffer - .anchor_after(search_range.start + match_range.start); - let end = search_buffer - .anchor_before(search_range.start + match_range.end); - Anchor::range_in_buffer( - excerpt_id, - search_buffer.remote_id(), - start..end, - ) - }), + .filter_map( + |match_range| { + let start = search_buffer.anchor_after( + search_range.start + match_range.start, + ); + let end = search_buffer.anchor_before( + search_range.start + match_range.end, + ); + let range = Anchor::range_in_buffer( + excerpt_id, + search_buffer.remote_id(), + start..end, + ); + (range != selection_anchors).then_some(range) + }, + ), ); } }