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:
Conrad Irwin
2025-09-18 16:47:23 +00:00
committed by GitHub
co-authored by Ben Kunkle Mikayla Maki Anthony
parent 0a9023bce0
commit fcdab160f9
219 changed files with 11697 additions and 11894 deletions
+13 -6
View File
@@ -30,10 +30,9 @@ use gpui::{
use lsp::{LanguageServerId, NumberOrString};
use parking_lot::Mutex;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use settings::{SettingsUi, WorktreeId};
use settings::WorktreeId;
use smallvec::SmallVec;
use smol::future::yield_now;
use std::{
@@ -174,10 +173,7 @@ pub enum IndentKind {
}
/// The shape of a selection cursor.
#[derive(
Copy, Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, JsonSchema, SettingsUi,
)]
#[serde(rename_all = "snake_case")]
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
pub enum CursorShape {
/// A vertical bar
#[default]
@@ -190,6 +186,17 @@ pub enum CursorShape {
Hollow,
}
impl From<settings::CursorShape> for CursorShape {
fn from(shape: settings::CursorShape) -> Self {
match shape {
settings::CursorShape::Bar => CursorShape::Bar,
settings::CursorShape::Block => CursorShape::Block,
settings::CursorShape::Underline => CursorShape::Underline,
settings::CursorShape::Hollow => CursorShape::Hollow,
}
}
}
#[derive(Clone, Debug)]
struct SelectionSet {
line_mode: bool,
+2 -4
View File
@@ -1,8 +1,5 @@
use super::*;
use crate::Buffer;
use crate::language_settings::{
AllLanguageSettings, AllLanguageSettingsContent, LanguageSettingsContent,
};
use clock::ReplicaId;
use collections::BTreeMap;
use futures::FutureExt as _;
@@ -13,6 +10,7 @@ use proto::deserialize_operation;
use rand::prelude::*;
use regex::RegexBuilder;
use settings::SettingsStore;
use settings::{AllLanguageSettingsContent, LanguageSettingsContent};
use std::collections::BTreeSet;
use std::{
env,
@@ -3849,7 +3847,7 @@ fn init_settings(cx: &mut App, f: fn(&mut AllLanguageSettingsContent)) {
cx.set_global(settings_store);
crate::init(cx);
cx.update_global::<SettingsStore, _>(|settings, cx| {
settings.update_user_settings::<AllLanguageSettings>(cx, f);
settings.update_user_settings(cx, |content| f(&mut content.project.all_languages));
});
}
+1 -1
View File
@@ -22,8 +22,8 @@ mod toolchain;
#[cfg(test)]
pub mod buffer_tests;
pub use crate::language_settings::EditPredictionsMode;
use crate::language_settings::SoftWrap;
pub use crate::language_settings::{EditPredictionsMode, IndentGuideSettings};
use anyhow::{Context as _, Result};
use async_trait::async_trait;
use collections::{HashMap, HashSet, IndexSet};
+3 -6
View File
@@ -1,14 +1,11 @@
use crate::{
CachedLspAdapter, File, Language, LanguageConfig, LanguageId, LanguageMatcher,
LanguageServerName, LspAdapter, ManifestName, PLAIN_TEXT, ToolchainLister,
language_settings::{
AllLanguageSettingsContent, LanguageSettingsContent, all_language_settings,
},
task_context::ContextProvider,
with_parser,
language_settings::all_language_settings, task_context::ContextProvider, with_parser,
};
use anyhow::{Context as _, Result, anyhow};
use collections::{FxHashMap, HashMap, HashSet, hash_map};
use settings::{AllLanguageSettingsContent, LanguageSettingsContent};
use futures::{
Future,
@@ -1175,7 +1172,7 @@ impl LanguageRegistryState {
language.set_theme(theme.syntax());
}
self.language_settings.languages.0.insert(
language.name(),
language.name().0,
LanguageSettingsContent {
tab_size: language.config.tab_size,
hard_tabs: language.config.hard_tabs,
File diff suppressed because it is too large Load Diff