Settings refactor (#38367)
Co-Authored-By: Ben K <ben@zed.dev> Co-Authored-By: Anthony <anthony@zed.dev> Co-Authored-By: Mikayla <mikayla@zed.dev> Release Notes: - settings: Major internal changes to settings. The primary user-facing effect is that some settings which did not make sense in project settings files are no-longer read from there. (For example the inline blame settings) --------- Co-authored-by: Ben Kunkle <ben@zed.dev> Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com> Co-authored-by: Anthony <anthony@zed.dev>
This commit is contained in:
co-authored by
Ben Kunkle
Mikayla Maki
Anthony
parent
0a9023bce0
commit
fcdab160f9
@@ -2,7 +2,7 @@ use std::str::FromStr;
|
||||
use std::sync::Arc;
|
||||
|
||||
use client::ExtensionMetadata;
|
||||
use extension_host::{ExtensionSettings, ExtensionStore};
|
||||
use extension_host::ExtensionStore;
|
||||
use fs::Fs;
|
||||
use fuzzy::{StringMatch, StringMatchCandidate, match_strings};
|
||||
use gpui::{App, DismissEvent, Entity, EventEmitter, Focusable, Task, WeakEntity, prelude::*};
|
||||
@@ -183,10 +183,13 @@ impl PickerDelegate for ExtensionVersionSelectorDelegate {
|
||||
let extension_id = extension_version.id.clone();
|
||||
let version = extension_version.manifest.version.clone();
|
||||
|
||||
update_settings_file::<ExtensionSettings>(self.fs.clone(), cx, {
|
||||
update_settings_file(self.fs.clone(), cx, {
|
||||
let extension_id = extension_id.clone();
|
||||
move |settings, _| {
|
||||
settings.auto_update_extensions.insert(extension_id, false);
|
||||
settings
|
||||
.extension
|
||||
.auto_update_extensions
|
||||
.insert(extension_id, false);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ use gpui::{
|
||||
use num_format::{Locale, ToFormattedString};
|
||||
use project::DirectoryLister;
|
||||
use release_channel::ReleaseChannel;
|
||||
use settings::Settings;
|
||||
use settings::{Settings, SettingsContent};
|
||||
use strum::IntoEnumIterator as _;
|
||||
use theme::ThemeSettings;
|
||||
use ui::{
|
||||
@@ -1269,17 +1269,17 @@ impl ExtensionsPage {
|
||||
Label::new(message)
|
||||
}
|
||||
|
||||
fn update_settings<T: Settings>(
|
||||
fn update_settings(
|
||||
&mut self,
|
||||
selection: &ToggleState,
|
||||
|
||||
cx: &mut Context<Self>,
|
||||
callback: impl 'static + Send + Fn(&mut T::FileContent, bool),
|
||||
callback: impl 'static + Send + Fn(&mut SettingsContent, bool),
|
||||
) {
|
||||
if let Some(workspace) = self.workspace.upgrade() {
|
||||
let fs = workspace.read(cx).app_state().fs.clone();
|
||||
let selection = *selection;
|
||||
settings::update_settings_file::<T>(fs, cx, move |settings, _| {
|
||||
settings::update_settings_file(fs, cx, move |settings, _| {
|
||||
let value = match selection {
|
||||
ToggleState::Unselected => false,
|
||||
ToggleState::Selected => true,
|
||||
@@ -1340,11 +1340,9 @@ impl ExtensionsPage {
|
||||
},
|
||||
cx.listener(move |this, selection, _, cx| {
|
||||
telemetry::event!("Vim Mode Toggled", source = "Feature Upsell");
|
||||
this.update_settings::<VimModeSetting>(
|
||||
selection,
|
||||
cx,
|
||||
|setting, value| setting.vim_mode = Some(value),
|
||||
);
|
||||
this.update_settings(selection, cx, |setting, value| {
|
||||
setting.vim_mode = Some(value)
|
||||
});
|
||||
}),
|
||||
)),
|
||||
Feature::LanguageBash => FeatureUpsell::new("Shell support is built-in to Zed!")
|
||||
|
||||
Reference in New Issue
Block a user