From 343e9d080ed1b35bd156ec11ca4f352aaf12dcdd Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Tue, 8 Aug 2023 15:57:07 +0200 Subject: [PATCH] Finish migration to modes for buffer search --- crates/search/src/buffer_search.rs | 24 +++++++++++++++--------- crates/search/src/mode.rs | 2 +- crates/search/src/search.rs | 1 + crates/vim/src/normal/search.rs | 8 +++----- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/crates/search/src/buffer_search.rs b/crates/search/src/buffer_search.rs index 8823f8236eb2d53580872ee52f8584b5854b6d4b..758a0b17cf39373497d879ef2b7b3cbf1e38ab09 100644 --- a/crates/search/src/buffer_search.rs +++ b/crates/search/src/buffer_search.rs @@ -158,7 +158,7 @@ impl View for BufferSearchBar { mode, is_active, move |_, this, cx| { - //this.activate_search_mode(mode, cx); + this.activate_search_mode(mode, cx); }, cx, ) @@ -222,12 +222,6 @@ impl View for BufferSearchBar { SearchOptions::WHOLE_WORD, cx, )) - /*.with_children(self.render_search_option( - supported_options.regex, - "Regex", - SearchOptions::REGEX, - cx, - ))*/ .contained() .with_style(theme.search.option_button_group) .aligned(), @@ -537,7 +531,19 @@ impl BufferSearchBar { ) .into_any() } - + pub fn activate_search_mode(&mut self, mode: SearchMode, cx: &mut ViewContext) { + assert_ne!( + mode, + SearchMode::Semantic, + "Semantic search is not supported in buffer search" + ); + if mode == self.current_mode { + return; + } + self.current_mode = mode; + let _ = self.update_matches(cx); + cx.notify(); + } fn deploy(pane: &mut Pane, action: &Deploy, cx: &mut ViewContext) { let mut propagate_action = true; if let Some(search_bar) = pane.toolbar().read(cx).item_of_type::() { @@ -713,7 +719,7 @@ impl BufferSearchBar { active_searchable_item.clear_matches(cx); let _ = done_tx.send(()); } else { - let query = if true { + let query = if self.current_mode == SearchMode::Regex { match SearchQuery::regex( query, self.search_options.contains(SearchOptions::WHOLE_WORD), diff --git a/crates/search/src/mode.rs b/crates/search/src/mode.rs index 072b9ffd804ee977396d80bbf38b3d944f91e249..bb620f0670b718481568176216b108ed122250c7 100644 --- a/crates/search/src/mode.rs +++ b/crates/search/src/mode.rs @@ -3,7 +3,7 @@ use gpui::Action; use crate::{ActivateRegexMode, ActivateSemanticMode, ActivateTextMode}; // TODO: Update the default search mode to get from config #[derive(Copy, Clone, Debug, Default, PartialEq)] -pub(crate) enum SearchMode { +pub enum SearchMode { #[default] Text, Semantic, diff --git a/crates/search/src/search.rs b/crates/search/src/search.rs index b2cc43c7c162fa3c552b79755e5f1f8c3b108f01..33905f83eced223c67616a80d85bf3a2603fc1b2 100644 --- a/crates/search/src/search.rs +++ b/crates/search/src/search.rs @@ -1,6 +1,7 @@ use bitflags::bitflags; pub use buffer_search::BufferSearchBar; use gpui::{actions, Action, AppContext}; +pub use mode::SearchMode; use project::search::SearchQuery; pub use project_search::{ProjectSearchBar, ProjectSearchView}; diff --git a/crates/vim/src/normal/search.rs b/crates/vim/src/normal/search.rs index 2ec4162e1e191de413e89f4a2e3a2a4e780e56f4..5f1a68cfe9606b4a823604623a777794f5f4e4d3 100644 --- a/crates/vim/src/normal/search.rs +++ b/crates/vim/src/normal/search.rs @@ -1,5 +1,5 @@ use gpui::{actions, impl_actions, AppContext, ViewContext}; -use search::{buffer_search, BufferSearchBar, SearchOptions}; +use search::{buffer_search, BufferSearchBar, SearchMode, SearchOptions}; use serde_derive::Deserialize; use workspace::{searchable::Direction, Pane, Workspace}; @@ -65,10 +65,8 @@ fn search(workspace: &mut Workspace, action: &Search, cx: &mut ViewContext