Reload the app settings whenever ~/.zed/settings.json changes
This commit is contained in:
parent
83f98dde52
commit
a971306381
2 changed files with 34 additions and 15 deletions
|
@ -533,12 +533,7 @@ impl LspAdapter for JsonLspAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn build_language_registry(login_shell_env_loaded: Task<()>) -> LanguageRegistry {
|
pub fn build_language_registry(login_shell_env_loaded: Task<()>) -> LanguageRegistry {
|
||||||
let mut languages = LanguageRegistry::new(login_shell_env_loaded);
|
let languages = LanguageRegistry::new(login_shell_env_loaded);
|
||||||
languages.set_language_server_download_dir(
|
|
||||||
dirs::home_dir()
|
|
||||||
.expect("failed to determine home directory")
|
|
||||||
.join(".zed"),
|
|
||||||
);
|
|
||||||
languages.add(Arc::new(c()));
|
languages.add(Arc::new(c()));
|
||||||
languages.add(Arc::new(json()));
|
languages.add(Arc::new(json()));
|
||||||
languages.add(Arc::new(rust()));
|
languages.add(Arc::new(rust()));
|
||||||
|
|
|
@ -12,7 +12,11 @@ use smol::process::Command;
|
||||||
use std::{env, fs, path::PathBuf, sync::Arc};
|
use std::{env, fs, path::PathBuf, sync::Arc};
|
||||||
use theme::{ThemeRegistry, DEFAULT_THEME_NAME};
|
use theme::{ThemeRegistry, DEFAULT_THEME_NAME};
|
||||||
use util::ResultExt;
|
use util::ResultExt;
|
||||||
use workspace::{self, settings, AppState, OpenNew, OpenParams, OpenPaths, Settings};
|
use workspace::{
|
||||||
|
self,
|
||||||
|
settings::{self, SettingsFile},
|
||||||
|
AppState, OpenNew, OpenParams, OpenPaths, Settings,
|
||||||
|
};
|
||||||
use zed::{
|
use zed::{
|
||||||
self, assets::Assets, build_window_options, build_workspace, fs::RealFs, language, menus,
|
self, assets::Assets, build_window_options, build_workspace, fs::RealFs, language, menus,
|
||||||
};
|
};
|
||||||
|
@ -23,9 +27,13 @@ fn main() {
|
||||||
let app = gpui::App::new(Assets).unwrap();
|
let app = gpui::App::new(Assets).unwrap();
|
||||||
load_embedded_fonts(&app);
|
load_embedded_fonts(&app);
|
||||||
|
|
||||||
|
let zed_dir = dirs::home_dir()
|
||||||
|
.expect("failed to determine home directory")
|
||||||
|
.join(".zed");
|
||||||
|
|
||||||
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 theme = themes.get(DEFAULT_THEME_NAME).unwrap();
|
||||||
let settings = Settings::new("Zed Mono", &app.font_cache(), theme)
|
let default_settings = Settings::new("Zed Mono", &app.font_cache(), theme)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.with_overrides(
|
.with_overrides(
|
||||||
language::PLAIN_TEXT.name(),
|
language::PLAIN_TEXT.name(),
|
||||||
|
@ -41,7 +49,6 @@ fn main() {
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let (settings_tx, settings) = postage::watch::channel_with(settings);
|
|
||||||
|
|
||||||
let login_shell_env_loaded = if stdout_is_a_pty() {
|
let login_shell_env_loaded = if stdout_is_a_pty() {
|
||||||
Task::ready(())
|
Task::ready(())
|
||||||
|
@ -51,10 +58,27 @@ fn main() {
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
let languages = Arc::new(language::build_language_registry(login_shell_env_loaded));
|
|
||||||
languages.set_theme(&settings.borrow().theme.editor.syntax);
|
|
||||||
|
|
||||||
app.run(move |cx| {
|
app.run(move |cx| {
|
||||||
|
let fs = Arc::new(RealFs);
|
||||||
|
let user_settings_file = cx.background().block(SettingsFile::new(
|
||||||
|
fs.clone(),
|
||||||
|
cx.background(),
|
||||||
|
zed_dir.join("settings.json"),
|
||||||
|
));
|
||||||
|
|
||||||
|
let (settings_tx, settings) = Settings::from_files(
|
||||||
|
default_settings,
|
||||||
|
vec![user_settings_file],
|
||||||
|
cx.background().clone(),
|
||||||
|
themes.clone(),
|
||||||
|
cx.font_cache().clone(),
|
||||||
|
);
|
||||||
|
|
||||||
|
let mut languages = language::build_language_registry(login_shell_env_loaded);
|
||||||
|
languages.set_language_server_download_dir(zed_dir);
|
||||||
|
languages.set_theme(&settings.borrow().theme.editor.syntax);
|
||||||
|
let languages = Arc::new(languages);
|
||||||
|
|
||||||
let http = http::client();
|
let http = http::client();
|
||||||
let client = client::Client::new(http.clone());
|
let client = client::Client::new(http.clone());
|
||||||
let user_store = cx.add_model(|cx| UserStore::new(client.clone(), http.clone(), cx));
|
let user_store = cx.add_model(|cx| UserStore::new(client.clone(), http.clone(), cx));
|
||||||
|
@ -85,15 +109,15 @@ fn main() {
|
||||||
.detach_and_log_err(cx);
|
.detach_and_log_err(cx);
|
||||||
|
|
||||||
let app_state = Arc::new(AppState {
|
let app_state = Arc::new(AppState {
|
||||||
languages: languages.clone(),
|
languages,
|
||||||
settings_tx: Arc::new(Mutex::new(settings_tx)),
|
settings_tx,
|
||||||
settings,
|
settings,
|
||||||
themes,
|
themes,
|
||||||
channel_list: cx
|
channel_list: cx
|
||||||
.add_model(|cx| ChannelList::new(user_store.clone(), client.clone(), cx)),
|
.add_model(|cx| ChannelList::new(user_store.clone(), client.clone(), cx)),
|
||||||
client,
|
client,
|
||||||
user_store,
|
user_store,
|
||||||
fs: Arc::new(RealFs),
|
fs,
|
||||||
path_openers: Arc::from(path_openers),
|
path_openers: Arc::from(path_openers),
|
||||||
build_window_options: &build_window_options,
|
build_window_options: &build_window_options,
|
||||||
build_workspace: &build_workspace,
|
build_workspace: &build_workspace,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue