Start moving default settings into a JSON file
Co-authored-by: Antonio Scandurra <me@as-cii.com>
This commit is contained in:
parent
1ac8265028
commit
e51dc25e1d
5 changed files with 82 additions and 89 deletions
39
assets/default-settings.json
Normal file
39
assets/default-settings.json
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
"theme": "cave-light",
|
||||||
|
"buffer_font_family": "Zed Mono",
|
||||||
|
"buffer_font_size": 15,
|
||||||
|
"hover_popover_enabled": true,
|
||||||
|
"vim_mode": false,
|
||||||
|
"autosave": "off",
|
||||||
|
"projects_online_by_default": true,
|
||||||
|
"languages_overrides": {
|
||||||
|
"Plain Text": {
|
||||||
|
"soft_wrap": "preferred_line_length"
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"tab_size": 2
|
||||||
|
},
|
||||||
|
"C++": {
|
||||||
|
"tab_size": 2
|
||||||
|
},
|
||||||
|
"Go": {
|
||||||
|
"tab_size": 4,
|
||||||
|
"hard_tabs": true
|
||||||
|
},
|
||||||
|
"Markdown": {
|
||||||
|
"soft_wrap": "preferred_line_length"
|
||||||
|
},
|
||||||
|
"Rust": {
|
||||||
|
"tab_size": 4
|
||||||
|
},
|
||||||
|
"JavaScript": {
|
||||||
|
"tab_size": 2
|
||||||
|
},
|
||||||
|
"TypeScript": {
|
||||||
|
"tab_size": 2
|
||||||
|
},
|
||||||
|
"TSX": {
|
||||||
|
"tab_size": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -608,8 +608,11 @@ mod tests {
|
||||||
let fonts = cx.font_cache();
|
let fonts = cx.font_cache();
|
||||||
let mut theme = gpui::fonts::with_font_cache(fonts.clone(), || theme::Theme::default());
|
let mut theme = gpui::fonts::with_font_cache(fonts.clone(), || theme::Theme::default());
|
||||||
theme.search.match_background = Color::red();
|
theme.search.match_background = Color::red();
|
||||||
let settings = Settings::new("Courier", &fonts, Arc::new(theme)).unwrap();
|
cx.update(|cx| {
|
||||||
cx.update(|cx| cx.set_global(settings));
|
let mut settings = Settings::test(cx);
|
||||||
|
settings.theme = Arc::new(theme);
|
||||||
|
cx.set_global(settings)
|
||||||
|
});
|
||||||
|
|
||||||
let buffer = cx.add_model(|cx| {
|
let buffer = cx.add_model(|cx| {
|
||||||
Buffer::new(
|
Buffer::new(
|
||||||
|
|
|
@ -911,8 +911,11 @@ mod tests {
|
||||||
let fonts = cx.font_cache();
|
let fonts = cx.font_cache();
|
||||||
let mut theme = gpui::fonts::with_font_cache(fonts.clone(), || theme::Theme::default());
|
let mut theme = gpui::fonts::with_font_cache(fonts.clone(), || theme::Theme::default());
|
||||||
theme.search.match_background = Color::red();
|
theme.search.match_background = Color::red();
|
||||||
let settings = Settings::new("Courier", &fonts, Arc::new(theme)).unwrap();
|
cx.update(|cx| {
|
||||||
cx.update(|cx| cx.set_global(settings));
|
let mut settings = Settings::test(cx);
|
||||||
|
settings.theme = Arc::new(theme);
|
||||||
|
cx.set_global(settings)
|
||||||
|
});
|
||||||
|
|
||||||
let fs = FakeFs::new(cx.background());
|
let fs = FakeFs::new(cx.background());
|
||||||
fs.insert_tree(
|
fs.insert_tree(
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
mod keymap_file;
|
mod keymap_file;
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use gpui::font_cache::{FamilyId, FontCache};
|
use gpui::{
|
||||||
|
font_cache::{FamilyId, FontCache},
|
||||||
|
AssetSource,
|
||||||
|
};
|
||||||
use schemars::{
|
use schemars::{
|
||||||
gen::{SchemaGenerator, SchemaSettings},
|
gen::{SchemaGenerator, SchemaSettings},
|
||||||
schema::{
|
schema::{
|
||||||
|
@ -97,24 +100,35 @@ pub struct SettingsFileContent {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Settings {
|
impl Settings {
|
||||||
pub fn new(
|
pub fn defaults(
|
||||||
buffer_font_family: &str,
|
assets: impl AssetSource,
|
||||||
font_cache: &FontCache,
|
font_cache: &FontCache,
|
||||||
theme: Arc<Theme>,
|
themes: &ThemeRegistry,
|
||||||
) -> Result<Self> {
|
) -> Self {
|
||||||
Ok(Self {
|
let defaults = assets.load("default-settings.json").unwrap();
|
||||||
buffer_font_family: font_cache.load_family(&[buffer_font_family])?,
|
let defaults: SettingsFileContent = serde_json::from_slice(defaults.as_ref()).unwrap();
|
||||||
buffer_font_size: 15.,
|
Self {
|
||||||
default_buffer_font_size: 15.,
|
buffer_font_family: font_cache
|
||||||
hover_popover_enabled: true,
|
.load_family(&[defaults.buffer_font_family.as_ref().unwrap()])
|
||||||
vim_mode: false,
|
.unwrap(),
|
||||||
autosave: Autosave::Off,
|
buffer_font_size: defaults.buffer_font_size.unwrap(),
|
||||||
language_settings: Default::default(),
|
default_buffer_font_size: defaults.buffer_font_size.unwrap(),
|
||||||
language_defaults: Default::default(),
|
hover_popover_enabled: defaults.hover_popover_enabled.unwrap(),
|
||||||
|
projects_online_by_default: defaults.projects_online_by_default.unwrap(),
|
||||||
|
vim_mode: defaults.vim_mode.unwrap(),
|
||||||
|
autosave: defaults.autosave.unwrap(),
|
||||||
|
language_settings: LanguageSettings {
|
||||||
|
tab_size: defaults.editor.tab_size,
|
||||||
|
hard_tabs: defaults.editor.hard_tabs,
|
||||||
|
soft_wrap: defaults.editor.soft_wrap,
|
||||||
|
preferred_line_length: defaults.editor.preferred_line_length,
|
||||||
|
format_on_save: defaults.editor.format_on_save,
|
||||||
|
enable_language_server: defaults.editor.enable_language_server,
|
||||||
|
},
|
||||||
|
language_defaults: defaults.language_overrides,
|
||||||
language_overrides: Default::default(),
|
language_overrides: Default::default(),
|
||||||
projects_online_by_default: true,
|
theme: themes.get(&defaults.theme.unwrap()).unwrap(),
|
||||||
theme,
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn with_language_defaults(
|
pub fn with_language_defaults(
|
||||||
|
|
|
@ -38,7 +38,7 @@ use std::{
|
||||||
time::Duration,
|
time::Duration,
|
||||||
};
|
};
|
||||||
use terminal;
|
use terminal;
|
||||||
use theme::{ThemeRegistry, DEFAULT_THEME_NAME};
|
use theme::ThemeRegistry;
|
||||||
use util::{ResultExt, TryFutureExt};
|
use util::{ResultExt, TryFutureExt};
|
||||||
use workspace::{self, AppState, NewFile, OpenPaths};
|
use workspace::{self, AppState, NewFile, OpenPaths};
|
||||||
use zed::{
|
use zed::{
|
||||||
|
@ -72,73 +72,7 @@ fn main() {
|
||||||
|
|
||||||
let fs = Arc::new(RealFs);
|
let fs = Arc::new(RealFs);
|
||||||
let themes = ThemeRegistry::new(Assets, app.font_cache());
|
let themes = ThemeRegistry::new(Assets, app.font_cache());
|
||||||
let theme = themes.get(DEFAULT_THEME_NAME).unwrap();
|
let default_settings = Settings::defaults(Assets, &app.font_cache(), &themes);
|
||||||
let default_settings = Settings::new("Zed Mono", &app.font_cache(), theme)
|
|
||||||
.unwrap()
|
|
||||||
.with_language_defaults(
|
|
||||||
languages::PLAIN_TEXT.name(),
|
|
||||||
settings::LanguageSettings {
|
|
||||||
soft_wrap: Some(settings::SoftWrap::PreferredLineLength),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_language_defaults(
|
|
||||||
"C",
|
|
||||||
settings::LanguageSettings {
|
|
||||||
tab_size: Some(2.try_into().unwrap()),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_language_defaults(
|
|
||||||
"C++",
|
|
||||||
settings::LanguageSettings {
|
|
||||||
tab_size: Some(2.try_into().unwrap()),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_language_defaults(
|
|
||||||
"Go",
|
|
||||||
settings::LanguageSettings {
|
|
||||||
tab_size: Some(4.try_into().unwrap()),
|
|
||||||
hard_tabs: Some(true),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_language_defaults(
|
|
||||||
"Markdown",
|
|
||||||
settings::LanguageSettings {
|
|
||||||
soft_wrap: Some(settings::SoftWrap::PreferredLineLength),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_language_defaults(
|
|
||||||
"Rust",
|
|
||||||
settings::LanguageSettings {
|
|
||||||
tab_size: Some(4.try_into().unwrap()),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_language_defaults(
|
|
||||||
"JavaScript",
|
|
||||||
settings::LanguageSettings {
|
|
||||||
tab_size: Some(2.try_into().unwrap()),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_language_defaults(
|
|
||||||
"TypeScript",
|
|
||||||
settings::LanguageSettings {
|
|
||||||
tab_size: Some(2.try_into().unwrap()),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.with_language_defaults(
|
|
||||||
"TSX",
|
|
||||||
settings::LanguageSettings {
|
|
||||||
tab_size: Some(2.try_into().unwrap()),
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
let config_files = load_config_files(&app, fs.clone());
|
let config_files = load_config_files(&app, fs.clone());
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue