add serialize and deserialize for agent settings
Co-authored-by: Oleksiy Syvokon <oleksiy.syvokon@gmail.com>
This commit is contained in:
parent
bbbc168f50
commit
dfa7cd431a
1 changed files with 29 additions and 2 deletions
|
@ -7,7 +7,7 @@ use collections::IndexMap;
|
||||||
use gpui::{App, Pixels, SharedString};
|
use gpui::{App, Pixels, SharedString};
|
||||||
use language_model::LanguageModel;
|
use language_model::LanguageModel;
|
||||||
use schemars::{JsonSchema, json_schema};
|
use schemars::{JsonSchema, json_schema};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||||
use settings::{Settings, SettingsSources};
|
use settings::{Settings, SettingsSources};
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use vim_mode_setting::EditorMode;
|
use vim_mode_setting::EditorMode;
|
||||||
|
@ -49,13 +49,40 @@ pub enum NotifyWhenAgentWaiting {
|
||||||
Never,
|
Never,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize, JsonSchema, Default)]
|
#[derive(Copy, Clone, Debug, PartialEq, Eq, JsonSchema, Default)]
|
||||||
pub enum AgentEditorMode {
|
pub enum AgentEditorMode {
|
||||||
EditorModeOverride(EditorMode),
|
EditorModeOverride(EditorMode),
|
||||||
#[default]
|
#[default]
|
||||||
Inherit,
|
Inherit,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'de> Deserialize<'de> for AgentEditorMode {
|
||||||
|
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||||
|
where
|
||||||
|
D: Deserializer<'de>,
|
||||||
|
{
|
||||||
|
let s = String::deserialize(deserializer)?;
|
||||||
|
if s == "inherit" {
|
||||||
|
Ok(AgentEditorMode::Inherit)
|
||||||
|
} else {
|
||||||
|
let mode = EditorMode::deserialize(serde::de::value::StringDeserializer::new(s))?;
|
||||||
|
Ok(AgentEditorMode::EditorModeOverride(mode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Serialize for AgentEditorMode {
|
||||||
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
where
|
||||||
|
S: Serializer,
|
||||||
|
{
|
||||||
|
match self {
|
||||||
|
AgentEditorMode::EditorModeOverride(mode) => mode.serialize(serializer),
|
||||||
|
AgentEditorMode::Inherit => serializer.serialize_str("inherit"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<EditorMode> for AgentEditorMode {
|
impl From<EditorMode> for AgentEditorMode {
|
||||||
fn from(b: EditorMode) -> Self {
|
fn from(b: EditorMode) -> Self {
|
||||||
AgentEditorMode::EditorModeOverride(b)
|
AgentEditorMode::EditorModeOverride(b)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue