mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-26 00:19:46 +00:00
Add setting to make projects online/offline by default
This commit is contained in:
parent
24aafde1e8
commit
ed14fd6e0d
3 changed files with 27 additions and 17 deletions
|
@ -4635,7 +4635,8 @@ impl TestServer {
|
|||
|
||||
async fn create_client(&mut self, cx: &mut TestAppContext, name: &str) -> TestClient {
|
||||
cx.update(|cx| {
|
||||
let settings = Settings::test(cx);
|
||||
let mut settings = Settings::test(cx);
|
||||
settings.projects_online_by_default = false;
|
||||
cx.set_global(settings);
|
||||
});
|
||||
|
||||
|
|
|
@ -562,9 +562,14 @@ impl Project {
|
|||
|
||||
let db = self.project_store.read(cx).db.clone();
|
||||
let keys = self.db_keys_for_online_state(cx);
|
||||
let online_by_default = cx.global::<Settings>().projects_online_by_default;
|
||||
let read_online = cx.background().spawn(async move {
|
||||
let values = db.read(keys)?;
|
||||
anyhow::Ok(values.into_iter().all(|e| e.is_some()))
|
||||
anyhow::Ok(
|
||||
values
|
||||
.into_iter()
|
||||
.all(|e| e.map_or(online_by_default, |e| e == [true as u8])),
|
||||
)
|
||||
});
|
||||
cx.spawn(|this, mut cx| async move {
|
||||
let online = read_online.await.log_err().unwrap_or(false);
|
||||
|
@ -592,11 +597,8 @@ impl Project {
|
|||
let keys = self.db_keys_for_online_state(cx);
|
||||
let is_online = self.is_online();
|
||||
cx.background().spawn(async move {
|
||||
if is_online {
|
||||
db.write(keys.into_iter().map(|key| (key, &[])))
|
||||
} else {
|
||||
db.delete(keys)
|
||||
}
|
||||
let value = &[is_online as u8];
|
||||
db.write(keys.into_iter().map(|key| (key, value)))
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -882,17 +884,15 @@ impl Project {
|
|||
self.worktrees
|
||||
.iter()
|
||||
.filter_map(|worktree| {
|
||||
worktree.upgrade(&cx).map(|worktree| {
|
||||
format!(
|
||||
let worktree = worktree.upgrade(&cx)?.read(cx);
|
||||
if worktree.is_visible() {
|
||||
Some(format!(
|
||||
"project-path-online:{}",
|
||||
worktree
|
||||
.read(cx)
|
||||
.as_local()
|
||||
.unwrap()
|
||||
.abs_path()
|
||||
.to_string_lossy()
|
||||
)
|
||||
})
|
||||
worktree.as_local().unwrap().abs_path().to_string_lossy()
|
||||
))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ pub use keymap_file::{keymap_file_json_schema, KeymapFileContent};
|
|||
|
||||
#[derive(Clone)]
|
||||
pub struct Settings {
|
||||
pub projects_online_by_default: bool,
|
||||
pub buffer_font_family: FamilyId,
|
||||
pub buffer_font_size: f32,
|
||||
pub default_buffer_font_size: f32,
|
||||
|
@ -49,6 +50,8 @@ pub enum SoftWrap {
|
|||
|
||||
#[derive(Clone, Debug, Default, Deserialize, JsonSchema)]
|
||||
pub struct SettingsFileContent {
|
||||
#[serde(default)]
|
||||
pub projects_online_by_default: Option<bool>,
|
||||
#[serde(default)]
|
||||
pub buffer_font_family: Option<String>,
|
||||
#[serde(default)]
|
||||
|
@ -81,6 +84,7 @@ impl Settings {
|
|||
preferred_line_length: 80,
|
||||
language_overrides: Default::default(),
|
||||
format_on_save: true,
|
||||
projects_online_by_default: true,
|
||||
theme,
|
||||
})
|
||||
}
|
||||
|
@ -135,6 +139,7 @@ impl Settings {
|
|||
preferred_line_length: 80,
|
||||
format_on_save: true,
|
||||
language_overrides: Default::default(),
|
||||
projects_online_by_default: true,
|
||||
theme: gpui::fonts::with_font_cache(cx.font_cache().clone(), || Default::default()),
|
||||
}
|
||||
}
|
||||
|
@ -164,6 +169,10 @@ impl Settings {
|
|||
}
|
||||
}
|
||||
|
||||
merge(
|
||||
&mut self.projects_online_by_default,
|
||||
data.projects_online_by_default,
|
||||
);
|
||||
merge(&mut self.buffer_font_size, data.buffer_font_size);
|
||||
merge(&mut self.default_buffer_font_size, data.buffer_font_size);
|
||||
merge(&mut self.vim_mode, data.vim_mode);
|
||||
|
|
Loading…
Reference in a new issue