Also tidies up error notifications so that in the case of syntax errors we don't see noise about the migration failing as well. Release Notes: - Invalid values in settings files will no longer prevent the rest of the file from being parsed.
46 lines
1.5 KiB
Rust
46 lines
1.5 KiB
Rust
use std::sync::Arc;
|
|
|
|
use collections::HashMap;
|
|
use schemars::JsonSchema;
|
|
use serde::{Deserialize, Serialize};
|
|
use settings_macros::{MergeFrom, with_fallible_options};
|
|
|
|
#[with_fallible_options]
|
|
#[derive(Debug, PartialEq, Clone, Default, Serialize, Deserialize, JsonSchema, MergeFrom)]
|
|
pub struct ExtensionSettingsContent {
|
|
/// The extensions that should be automatically installed by Zed.
|
|
///
|
|
/// This is used to make functionality provided by extensions (e.g., language support)
|
|
/// available out-of-the-box.
|
|
///
|
|
/// Default: { "html": true }
|
|
#[serde(default)]
|
|
pub auto_install_extensions: HashMap<Arc<str>, bool>,
|
|
#[serde(default)]
|
|
pub auto_update_extensions: HashMap<Arc<str>, bool>,
|
|
/// The capabilities granted to extensions.
|
|
pub granted_extension_capabilities: Option<Vec<ExtensionCapabilityContent>>,
|
|
}
|
|
|
|
/// A capability for an extension.
|
|
#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize, JsonSchema)]
|
|
#[serde(tag = "kind", rename_all = "snake_case")]
|
|
pub enum ExtensionCapabilityContent {
|
|
#[serde(rename = "process:exec")]
|
|
ProcessExec {
|
|
/// The command to execute.
|
|
command: String,
|
|
/// The arguments to pass to the command. Use `*` for a single wildcard argument.
|
|
/// If the last element is `**`, then any trailing arguments are allowed.
|
|
args: Vec<String>,
|
|
},
|
|
DownloadFile {
|
|
host: String,
|
|
path: Vec<String>,
|
|
},
|
|
#[serde(rename = "npm:install")]
|
|
NpmInstallPackage {
|
|
package: String,
|
|
},
|
|
}
|