settings: Remove auxiliary Content types where possible (#16744)

Release Notes:

- N/A
This commit is contained in:
Piotr Osiewicz 2024-09-10 22:59:10 -04:00 committed by GitHub
parent 8f28445612
commit ccf6f27b8f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
49 changed files with 843 additions and 696 deletions

View file

@ -48,7 +48,6 @@ use workspace::{notifications::DetachAndPromptErr, AppState, ModalView, Workspac
use crate::open_dev_server_project;
use crate::ssh_connections::connect_over_ssh;
use crate::ssh_connections::open_ssh_project;
use crate::ssh_connections::RemoteSettingsContent;
use crate::ssh_connections::SshConnection;
use crate::ssh_connections::SshConnectionModal;
use crate::ssh_connections::SshProject;
@ -1024,7 +1023,7 @@ impl DevServerProjects {
fn update_settings_file(
&mut self,
cx: &mut ViewContext<Self>,
f: impl FnOnce(&mut RemoteSettingsContent) + Send + Sync + 'static,
f: impl FnOnce(&mut SshSettings) + Send + Sync + 'static,
) {
let Some(fs) = self
.workspace

View file

@ -22,8 +22,24 @@ use ui::{
use util::paths::PathWithPosition;
use workspace::{AppState, ModalView, Workspace};
#[derive(Deserialize)]
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema)]
#[serde(default)]
pub struct SshSettings {
/// ssh_connections is an array of ssh connections.
/// By default this setting is null, which disables the direct ssh connection support.
/// You can configure these from `project: Open Remote` in the command palette.
/// Zed's ssh support will pull configuration from your ~/.ssh too.
/// Examples:
/// [
/// {
/// "host": "example-box",
/// "projects": [
/// {
/// "paths": ["/home/user/code/zed"]
/// }
/// ]
/// }
/// ]
pub ssh_connections: Option<Vec<SshConnection>>,
}
@ -62,15 +78,10 @@ pub struct SshProject {
pub paths: Vec<String>,
}
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema)]
pub struct RemoteSettingsContent {
pub ssh_connections: Option<Vec<SshConnection>>,
}
impl Settings for SshSettings {
const KEY: Option<&'static str> = None;
type FileContent = RemoteSettingsContent;
type FileContent = Self;
fn load(sources: SettingsSources<Self::FileContent>, _: &mut AppContext) -> Result<Self> {
sources.json_merge()