1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3use settings::Setting;
4
5#[derive(Deserialize)]
6pub struct EditorSettings {
7 pub cursor_blink: bool,
8 pub hover_popover_enabled: bool,
9 pub show_completions_on_input: bool,
10 pub show_scrollbars: ShowScrollbars,
11}
12
13#[derive(Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
14#[serde(rename_all = "snake_case")]
15pub enum ShowScrollbars {
16 Auto,
17 System,
18 Always,
19 Never,
20}
21
22#[derive(Clone, Default, Serialize, Deserialize, JsonSchema)]
23pub struct EditorSettingsContent {
24 pub cursor_blink: Option<bool>,
25 pub hover_popover_enabled: Option<bool>,
26 pub show_completions_on_input: Option<bool>,
27 pub show_scrollbars: Option<ShowScrollbars>,
28}
29
30impl Setting for EditorSettings {
31 const KEY: Option<&'static str> = None;
32
33 type FileContent = EditorSettingsContent;
34
35 fn load(
36 default_value: &Self::FileContent,
37 user_values: &[&Self::FileContent],
38 _: &gpui::AppContext,
39 ) -> anyhow::Result<Self> {
40 Self::load_via_json_merge(default_value, user_values)
41 }
42}