
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>
35 lines
983 B
Rust
35 lines
983 B
Rust
use anyhow::Result;
|
|
use gpui::AppContext;
|
|
use schemars::JsonSchema;
|
|
use serde_derive::{Deserialize, Serialize};
|
|
use settings::{Settings, SettingsSources};
|
|
|
|
#[derive(Deserialize, Debug)]
|
|
pub struct CallSettings {
|
|
pub mute_on_join: bool,
|
|
pub share_on_join: bool,
|
|
}
|
|
|
|
/// Configuration of voice calls in Zed.
|
|
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema, Debug)]
|
|
pub struct CallSettingsContent {
|
|
/// Whether the microphone should be muted when joining a channel or a call.
|
|
///
|
|
/// Default: false
|
|
pub mute_on_join: Option<bool>,
|
|
|
|
/// Whether your current project should be shared when joining an empty channel.
|
|
///
|
|
/// Default: true
|
|
pub share_on_join: Option<bool>,
|
|
}
|
|
|
|
impl Settings for CallSettings {
|
|
const KEY: Option<&'static str> = Some("calls");
|
|
|
|
type FileContent = CallSettingsContent;
|
|
|
|
fn load(sources: SettingsSources<Self::FileContent>, _: &mut AppContext) -> Result<Self> {
|
|
sources.json_merge()
|
|
}
|
|
}
|