Cargo.lock 🔗
@@ -5295,6 +5295,7 @@ dependencies = [
"url",
"util",
"uuid",
+ "vim_mode_setting",
"workspace",
"workspace-hack",
"zed_actions",
Conrad Irwin created
In the settings refactor I'd assumed server settings were like project
settings. This is not the case, they are in fact the normal user
settings;
but just read from the server.
Release Notes:
- N/A
Cargo.lock | 1
crates/editor/Cargo.toml | 1
crates/editor/src/editor.rs | 8 +--
crates/project/src/project_settings.rs | 5 -
crates/remote_server/src/remote_editing_tests.rs | 7 +-
crates/settings/src/settings_content.rs | 7 --
crates/settings/src/settings_store.rs | 44 +----------------
7 files changed, 13 insertions(+), 60 deletions(-)
@@ -5295,6 +5295,7 @@ dependencies = [
"url",
"util",
"uuid",
+ "vim_mode_setting",
"workspace",
"workspace-hack",
"zed_actions",
@@ -89,6 +89,7 @@ ui.workspace = true
url.workspace = true
util.workspace = true
uuid.workspace = true
+vim_mode_setting.workspace = true
workspace.workspace = true
zed_actions.workspace = true
workspace-hack.workspace = true
@@ -21678,12 +21678,10 @@ impl Editor {
}
}
-// todo(settings_refactor) this should not be!
fn vim_enabled(cx: &App) -> bool {
- cx.global::<SettingsStore>()
- .raw_user_settings()
- .and_then(|settings| settings.content.vim_mode)
- == Some(true)
+ vim_mode_setting::VimModeSetting::try_get(cx)
+ .map(|vim_mode| vim_mode.0)
+ .unwrap_or(false)
}
fn process_completion_for_edit(
@@ -770,12 +770,9 @@ impl SettingsObserver {
envelope: TypedEnvelope<proto::UpdateUserSettings>,
cx: AsyncApp,
) -> anyhow::Result<()> {
- let new_settings = serde_json::from_str(&envelope.payload.contents).with_context(|| {
- format!("deserializing {} user settings", envelope.payload.contents)
- })?;
cx.update_global(|settings_store: &mut SettingsStore, cx| {
settings_store
- .set_raw_user_settings(new_settings, cx)
+ .set_user_settings(&envelope.payload.contents, cx)
.context("setting new user settings")?;
anyhow::Ok(())
})??;
@@ -1797,8 +1797,8 @@ async fn test_remote_external_agent_server(
pretty_assertions::assert_eq!(names, ["gemini", "claude"]);
server_cx.update_global::<SettingsStore, _>(|settings_store, cx| {
settings_store
- .set_raw_server_settings(
- Some(json!({
+ .set_server_settings(
+ &json!({
"agent_servers": {
"foo": {
"command": "foo-cli",
@@ -1808,7 +1808,8 @@ async fn test_remote_external_agent_server(
}
}
}
- })),
+ })
+ .to_string(),
cx,
)
.unwrap();
@@ -166,13 +166,6 @@ impl SettingsContent {
}
}
-#[skip_serializing_none]
-#[derive(Debug, Default, Serialize, Deserialize, JsonSchema, MergeFrom)]
-pub struct ServerSettingsContent {
- #[serde(flatten)]
- pub project: ProjectSettingsContent,
-}
-
#[skip_serializing_none]
#[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize, JsonSchema, MergeFrom)]
pub struct UserSettingsContent {
@@ -36,8 +36,7 @@ use crate::{
merge_from::MergeFrom,
parse_json_with_comments, replace_value_in_json_text,
settings_content::{
- ExtensionsSettingsContent, ProjectSettingsContent, ServerSettingsContent, SettingsContent,
- UserSettingsContent,
+ ExtensionsSettingsContent, ProjectSettingsContent, SettingsContent, UserSettingsContent,
},
update_value_in_json_text,
};
@@ -327,33 +326,6 @@ impl SettingsStore {
self.user_settings.as_ref()
}
- /// Replaces current settings with the values from the given JSON.
- pub fn set_raw_user_settings(
- &mut self,
- new_settings: UserSettingsContent,
- cx: &mut App,
- ) -> Result<()> {
- self.user_settings = Some(new_settings);
- self.recompute_values(None, cx)?;
- Ok(())
- }
-
- /// Replaces current settings with the values from the given JSON.
- pub fn set_raw_server_settings(
- &mut self,
- new_settings: Option<Value>,
- cx: &mut App,
- ) -> Result<()> {
- // Rewrite the server settings into a content type
- self.server_settings = new_settings
- .map(|settings| settings.to_string())
- .and_then(|str| parse_json_with_comments::<SettingsContent>(&str).ok())
- .map(Box::new);
-
- self.recompute_values(None, cx)?;
- Ok(())
- }
-
/// Get the configured settings profile names.
pub fn configured_settings_profiles(&self) -> impl Iterator<Item = &str> {
self.user_settings
@@ -361,11 +333,6 @@ impl SettingsStore {
.flat_map(|settings| settings.profiles.keys().map(|k| k.as_str()))
}
- /// Access the raw JSON value of the default settings.
- pub fn raw_default_settings(&self) -> &SettingsContent {
- &self.default_settings
- }
-
#[cfg(any(test, feature = "test-support"))]
pub fn test(cx: &mut App) -> Self {
Self::new(cx, &crate::test_settings())
@@ -621,19 +588,14 @@ impl SettingsStore {
server_settings_content: &str,
cx: &mut App,
) -> Result<()> {
- let settings: Option<ServerSettingsContent> = if server_settings_content.is_empty() {
+ let settings: Option<SettingsContent> = if server_settings_content.is_empty() {
None
} else {
parse_json_with_comments(server_settings_content)?
};
// Rewrite the server settings into a content type
- self.server_settings = settings.map(|settings| {
- Box::new(SettingsContent {
- project: settings.project,
- ..Default::default()
- })
- });
+ self.server_settings = settings.map(|settings| Box::new(settings));
self.recompute_values(None, cx)?;
Ok(())