Add a way to configure default search options (#17179)
Closes https://github.com/zed-industries/zed/issues/4646 ```json // Search options to enable by default when opening new project and buffer searches. "search": { "whole_word": false, "case_sensitive": false, "include_ignored": false, "regex": false } ``` Release Notes: - Added `search` settings section to configure default options enabled in buffer and project searches ([#4646](https://github.com/zed-industries/zed/issues/4646)) --------- Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
This commit is contained in:
co-authored by
Kirill Bulatov
parent
8985fd87c2
commit
65961b80fc
@@ -59,7 +59,9 @@ use convert_case::{Case, Casing};
|
||||
use debounced_delay::DebouncedDelay;
|
||||
use display_map::*;
|
||||
pub use display_map::{DisplayPoint, FoldPlaceholder};
|
||||
pub use editor_settings::{CurrentLineHighlight, EditorSettings, ScrollBeyondLastLine};
|
||||
pub use editor_settings::{
|
||||
CurrentLineHighlight, EditorSettings, ScrollBeyondLastLine, SearchSettings,
|
||||
};
|
||||
pub use editor_settings_controls::*;
|
||||
use element::LineWithInvisibles;
|
||||
pub use element::{
|
||||
|
||||
@@ -28,6 +28,8 @@ pub struct EditorSettings {
|
||||
#[serde(default)]
|
||||
pub double_click_in_multibuffer: DoubleClickInMultibuffer,
|
||||
pub search_wrap: bool,
|
||||
#[serde(default)]
|
||||
pub search: SearchSettings,
|
||||
pub auto_signature_help: bool,
|
||||
pub show_signature_help_after_edits: bool,
|
||||
pub jupyter: Jupyter,
|
||||
@@ -156,6 +158,40 @@ pub enum ScrollBeyondLastLine {
|
||||
VerticalScrollMargin,
|
||||
}
|
||||
|
||||
/// Default options for buffer and project search items.
|
||||
#[derive(Copy, Clone, Default, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
|
||||
pub struct SearchSettings {
|
||||
#[serde(default)]
|
||||
pub whole_word: bool,
|
||||
#[serde(default)]
|
||||
pub case_sensitive: bool,
|
||||
#[serde(default)]
|
||||
pub include_ignored: bool,
|
||||
#[serde(default)]
|
||||
pub regex: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema, Debug)]
|
||||
pub struct SearchSettingsContent {
|
||||
pub whole_word: Option<bool>,
|
||||
pub case_sensitive: Option<bool>,
|
||||
pub include_ignored: Option<bool>,
|
||||
pub regex: Option<bool>,
|
||||
}
|
||||
|
||||
impl Settings for SearchSettings {
|
||||
const KEY: Option<&'static str> = Some("search");
|
||||
|
||||
type FileContent = SearchSettingsContent;
|
||||
|
||||
fn load(
|
||||
sources: SettingsSources<Self::FileContent>,
|
||||
_: &mut gpui::AppContext,
|
||||
) -> anyhow::Result<Self> {
|
||||
sources.json_merge()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema)]
|
||||
pub struct EditorSettingsContent {
|
||||
/// Whether the cursor blinks in the editor.
|
||||
@@ -251,6 +287,11 @@ pub struct EditorSettingsContent {
|
||||
/// Default: true
|
||||
pub search_wrap: Option<bool>,
|
||||
|
||||
/// Defaults to use when opening a new buffer and project search items.
|
||||
///
|
||||
/// Default: nothing is enabled
|
||||
pub search: Option<SearchSettings>,
|
||||
|
||||
/// Whether to automatically show a signature help pop-up or not.
|
||||
///
|
||||
/// Default: false
|
||||
|
||||
Reference in New Issue
Block a user