mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-10 20:41:59 +00:00
Populate created local settings file with an empty JSON object and comments
This commit is contained in:
parent
cb975f1252
commit
296a0bf510
5 changed files with 55 additions and 20 deletions
11
assets/settings/initial_local_settings.json
Normal file
11
assets/settings/initial_local_settings.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
// Folder-specific Zed settings
|
||||||
|
//
|
||||||
|
// A subset of Zed's settings can be configured on a per-folder basis.
|
||||||
|
//
|
||||||
|
// For information on how to configure Zed, see the Zed
|
||||||
|
// documentation: https://zed.dev/docs/configuring-zed
|
||||||
|
//
|
||||||
|
// To see all of Zed's default settings without changing your
|
||||||
|
// custom settings, run the `open default settings` command
|
||||||
|
// from the command palette or from `Zed` application menu.
|
||||||
|
{}
|
|
@ -1424,7 +1424,7 @@ async fn join_project(
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
for settings_file in dbg!(worktree.settings_files) {
|
for settings_file in worktree.settings_files {
|
||||||
session.peer.send(
|
session.peer.send(
|
||||||
session.connection_id,
|
session.connection_id,
|
||||||
proto::UpdateWorktreeSettings {
|
proto::UpdateWorktreeSettings {
|
||||||
|
@ -1554,8 +1554,6 @@ async fn update_worktree_settings(
|
||||||
message: proto::UpdateWorktreeSettings,
|
message: proto::UpdateWorktreeSettings,
|
||||||
session: Session,
|
session: Session,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
dbg!(&message);
|
|
||||||
|
|
||||||
let guest_connection_ids = session
|
let guest_connection_ids = session
|
||||||
.db()
|
.db()
|
||||||
.await
|
.await
|
||||||
|
|
|
@ -9,10 +9,23 @@ pub use settings_store::{Setting, SettingsJsonSchemaParams, SettingsStore};
|
||||||
use std::{borrow::Cow, str};
|
use std::{borrow::Cow, str};
|
||||||
|
|
||||||
pub const DEFAULT_SETTINGS_ASSET_PATH: &str = "settings/default.json";
|
pub const DEFAULT_SETTINGS_ASSET_PATH: &str = "settings/default.json";
|
||||||
pub const INITIAL_USER_SETTINGS_ASSET_PATH: &str = "settings/initial_user_settings.json";
|
const INITIAL_USER_SETTINGS_ASSET_PATH: &str = "settings/initial_user_settings.json";
|
||||||
|
const INITIAL_LOCAL_SETTINGS_ASSET_PATH: &str = "settings/initial_local_settings.json";
|
||||||
|
|
||||||
pub fn initial_user_settings_content(assets: &'static impl AssetSource) -> Cow<'static, str> {
|
pub fn default_settings() -> Cow<'static, str> {
|
||||||
match assets.load(INITIAL_USER_SETTINGS_ASSET_PATH).unwrap() {
|
asset_str(&assets::Assets, DEFAULT_SETTINGS_ASSET_PATH)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn initial_user_settings_content(assets: &dyn AssetSource) -> Cow<'_, str> {
|
||||||
|
asset_str(assets, INITIAL_USER_SETTINGS_ASSET_PATH)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn initial_local_settings_content(assets: &dyn AssetSource) -> Cow<'_, str> {
|
||||||
|
asset_str(assets, INITIAL_LOCAL_SETTINGS_ASSET_PATH)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn asset_str<'a>(assets: &'a dyn AssetSource, path: &str) -> Cow<'a, str> {
|
||||||
|
match assets.load(path).unwrap() {
|
||||||
Cow::Borrowed(s) => Cow::Borrowed(str::from_utf8(s).unwrap()),
|
Cow::Borrowed(s) => Cow::Borrowed(str::from_utf8(s).unwrap()),
|
||||||
Cow::Owned(s) => Cow::Owned(String::from_utf8(s).unwrap()),
|
Cow::Owned(s) => Cow::Owned(String::from_utf8(s).unwrap()),
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
use crate::{settings_store::SettingsStore, Setting, DEFAULT_SETTINGS_ASSET_PATH};
|
use crate::{settings_store::SettingsStore, Setting};
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use assets::Assets;
|
use assets::Assets;
|
||||||
use fs::Fs;
|
use fs::Fs;
|
||||||
use futures::{channel::mpsc, StreamExt};
|
use futures::{channel::mpsc, StreamExt};
|
||||||
use gpui::{executor::Background, AppContext, AssetSource};
|
use gpui::{executor::Background, AppContext};
|
||||||
use std::{
|
use std::{
|
||||||
borrow::Cow,
|
|
||||||
io::ErrorKind,
|
io::ErrorKind,
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
str,
|
str,
|
||||||
|
@ -28,19 +27,12 @@ pub fn get_local<'a, T: Setting>(location: Option<(usize, &Path)>, cx: &'a AppCo
|
||||||
cx.global::<SettingsStore>().get(location)
|
cx.global::<SettingsStore>().get(location)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn default_settings() -> Cow<'static, str> {
|
|
||||||
match Assets.load(DEFAULT_SETTINGS_ASSET_PATH).unwrap() {
|
|
||||||
Cow::Borrowed(s) => Cow::Borrowed(str::from_utf8(s).unwrap()),
|
|
||||||
Cow::Owned(s) => Cow::Owned(String::from_utf8(s).unwrap()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub const EMPTY_THEME_NAME: &'static str = "empty-theme";
|
pub const EMPTY_THEME_NAME: &'static str = "empty-theme";
|
||||||
|
|
||||||
#[cfg(any(test, feature = "test-support"))]
|
#[cfg(any(test, feature = "test-support"))]
|
||||||
pub fn test_settings() -> String {
|
pub fn test_settings() -> String {
|
||||||
let mut value = crate::settings_store::parse_json_with_comments::<serde_json::Value>(
|
let mut value = crate::settings_store::parse_json_with_comments::<serde_json::Value>(
|
||||||
default_settings().as_ref(),
|
crate::default_settings().as_ref(),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
util::merge_non_null_json_value_into(
|
util::merge_non_null_json_value_into(
|
||||||
|
|
|
@ -30,7 +30,9 @@ use project_panel::ProjectPanel;
|
||||||
use search::{BufferSearchBar, ProjectSearchBar};
|
use search::{BufferSearchBar, ProjectSearchBar};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_json::to_string_pretty;
|
use serde_json::to_string_pretty;
|
||||||
use settings::{KeymapFileContent, SettingsStore, DEFAULT_SETTINGS_ASSET_PATH};
|
use settings::{
|
||||||
|
initial_local_settings_content, KeymapFileContent, SettingsStore, DEFAULT_SETTINGS_ASSET_PATH,
|
||||||
|
};
|
||||||
use std::{borrow::Cow, str, sync::Arc};
|
use std::{borrow::Cow, str, sync::Arc};
|
||||||
use terminal_view::terminal_panel::{self, TerminalPanel};
|
use terminal_view::terminal_panel::{self, TerminalPanel};
|
||||||
use util::{
|
use util::{
|
||||||
|
@ -596,11 +598,30 @@ fn open_local_settings_file(
|
||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
workspace
|
let editor = workspace
|
||||||
.update(&mut cx, |workspace, cx| {
|
.update(&mut cx, |workspace, cx| {
|
||||||
workspace.open_path((tree_id, file_path), None, true, cx)
|
workspace.open_path((tree_id, file_path), None, true, cx)
|
||||||
})?
|
})?
|
||||||
.await?;
|
.await?
|
||||||
|
.downcast::<Editor>()
|
||||||
|
.ok_or_else(|| anyhow!("unexpected item type"))?;
|
||||||
|
|
||||||
|
editor
|
||||||
|
.downgrade()
|
||||||
|
.update(&mut cx, |editor, cx| {
|
||||||
|
if let Some(buffer) = editor.buffer().read(cx).as_singleton() {
|
||||||
|
if buffer.read(cx).is_empty() {
|
||||||
|
buffer.update(cx, |buffer, cx| {
|
||||||
|
buffer.edit(
|
||||||
|
[(0..0, initial_local_settings_content(&Assets))],
|
||||||
|
None,
|
||||||
|
cx,
|
||||||
|
)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.ok();
|
||||||
|
|
||||||
anyhow::Ok(())
|
anyhow::Ok(())
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue