mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-11 04:36:24 +00:00
This PR adds the ability for extensions to provide certain language settings via the language `config.toml`. These settings are then merged in with the rest of the settings when the language is loaded from the extension. The language settings that are available are: - `tab_size` - `hard_tabs` - `soft_wrap` Additionally, for bundled languages we moved these settings out of the `settings/default.json` and into their respective `config.toml`s . For languages currently provided by extensions, we are leaving the values in the `settings/default.json` temporarily until all released versions of Zed are able to load these settings from the extension. --- Along the way we ended up refactoring the `Settings::load` method slightly, introducing a new `SettingsSources` struct to better convey where the settings are being loaded from. This makes it easier to load settings from specific locations/sets of locations in an explicit way. Release Notes: - N/A --------- Co-authored-by: Max <max@zed.dev> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
28 lines
802 B
Rust
28 lines
802 B
Rust
use schemars::JsonSchema;
|
|
use serde::{Deserialize, Serialize};
|
|
use settings::{Settings, SettingsSources};
|
|
|
|
#[derive(Serialize, Deserialize, PartialEq, Default)]
|
|
pub(crate) struct TaskSettings {
|
|
pub(crate) show_status_indicator: bool,
|
|
}
|
|
|
|
/// Task-related settings.
|
|
#[derive(Serialize, Deserialize, PartialEq, Default, Clone, JsonSchema)]
|
|
pub(crate) struct TaskSettingsContent {
|
|
/// Whether to show task status indicator in the status bar. Default: true
|
|
show_status_indicator: Option<bool>,
|
|
}
|
|
|
|
impl Settings for TaskSettings {
|
|
const KEY: Option<&'static str> = Some("task");
|
|
|
|
type FileContent = TaskSettingsContent;
|
|
|
|
fn load(
|
|
sources: SettingsSources<Self::FileContent>,
|
|
_: &mut gpui::AppContext,
|
|
) -> gpui::Result<Self> {
|
|
sources.json_merge()
|
|
}
|
|
}
|