1mod keymap_file;
2mod settings_file;
3mod settings_store;
4
5use gpui::AppContext;
6use rust_embed::RustEmbed;
7use std::{borrow::Cow, str};
8use util::asset_str;
9
10pub use keymap_file::KeymapFile;
11pub use settings_file::*;
12pub use settings_store::{
13 Settings, SettingsJsonSchemaParams, SettingsLocation, SettingsSources, SettingsStore,
14};
15
16#[derive(RustEmbed)]
17#[folder = "../../assets"]
18#[include = "settings/*"]
19#[include = "keymaps/*"]
20#[exclude = "*.DS_Store"]
21pub struct SettingsAssets;
22
23pub fn init(cx: &mut AppContext) {
24 let mut settings = SettingsStore::default();
25 settings
26 .set_default_settings(&default_settings(), cx)
27 .unwrap();
28 cx.set_global(settings);
29}
30
31pub fn default_settings() -> Cow<'static, str> {
32 asset_str::<SettingsAssets>("settings/default.json")
33}
34
35#[cfg(target_os = "macos")]
36pub const DEFAULT_KEYMAP_PATH: &str = "keymaps/default-macos.json";
37
38#[cfg(not(target_os = "macos"))]
39pub const DEFAULT_KEYMAP_PATH: &str = "keymaps/default-linux.json";
40
41pub fn default_keymap() -> Cow<'static, str> {
42 asset_str::<SettingsAssets>(DEFAULT_KEYMAP_PATH)
43}
44
45pub fn vim_keymap() -> Cow<'static, str> {
46 asset_str::<SettingsAssets>("keymaps/vim.json")
47}
48
49pub fn initial_user_settings_content() -> Cow<'static, str> {
50 asset_str::<SettingsAssets>("settings/initial_user_settings.json")
51}
52
53pub fn initial_local_settings_content() -> Cow<'static, str> {
54 asset_str::<SettingsAssets>("settings/initial_local_settings.json")
55}
56
57pub fn initial_keymap_content() -> Cow<'static, str> {
58 asset_str::<SettingsAssets>("keymaps/initial.json")
59}
60
61pub fn initial_tasks_content() -> Cow<'static, str> {
62 asset_str::<SettingsAssets>("settings/initial_tasks.json")
63}