Unfold range when selecting the next match

Antonio Scandurra created

Selected matches are unfolded when in project search, buffer search and
when hitting `cmd-d` to select the next match.

Change summary

crates/editor/src/editor.rs         | 2 ++
crates/search/src/buffer_search.rs  | 8 +++-----
crates/search/src/project_search.rs | 1 +
3 files changed, 6 insertions(+), 5 deletions(-)

Detailed changes

crates/editor/src/editor.rs 🔗

@@ -3907,6 +3907,7 @@ impl Editor {
                         reversed: false,
                         goal: SelectionGoal::None,
                     });
+                    self.unfold_ranges([next_selected_range], false, cx);
                     self.update_selections(selections, Some(Autoscroll::Newest), cx);
                 } else {
                     select_next_state.done = true;
@@ -3934,6 +3935,7 @@ impl Editor {
                     wordwise: true,
                     done: false,
                 };
+                self.unfold_ranges([selection.start..selection.end], false, cx);
                 self.update_selections(selections, Some(Autoscroll::Newest), cx);
                 self.select_next_state = Some(select_state);
             } else {

crates/search/src/buffer_search.rs 🔗

@@ -336,11 +336,9 @@ impl SearchBar {
                             direction,
                             &editor.buffer().read(cx).read(cx),
                         );
-                        editor.select_ranges(
-                            [ranges[new_index].clone()],
-                            Some(Autoscroll::Fit),
-                            cx,
-                        );
+                        let range_to_select = ranges[new_index].clone();
+                        editor.unfold_ranges([range_to_select.clone()], false, cx);
+                        editor.select_ranges([range_to_select], Some(Autoscroll::Fit), cx);
                     }
                 });
             }

crates/search/src/project_search.rs 🔗

@@ -489,6 +489,7 @@ impl ProjectSearchView {
             );
             let range_to_select = model.match_ranges[new_index].clone();
             self.results_editor.update(cx, |editor, cx| {
+                editor.unfold_ranges([range_to_select.clone()], false, cx);
                 editor.select_ranges([range_to_select], Some(Autoscroll::Fit), cx);
             });
         }