use serde::{Deserialize, Deserializer, Serialize, de};
use toml::Value;
use alacritty_config_derive::{ConfigDeserialize, SerdeReplace};
use alacritty_terminal::term::Osc52;
use crate::config::ui_config::{Program, StringVisitor};
#[derive(ConfigDeserialize, Serialize, Default, Clone, Debug, PartialEq)]
pub struct Terminal {
pub osc52: SerdeOsc52,
pub shell: Option<Program>,
}
#[derive(SerdeReplace, Serialize, Default, Copy, Clone, Debug, PartialEq)]
pub struct SerdeOsc52(pub Osc52);
impl<'de> Deserialize<'de> for SerdeOsc52 {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let value = deserializer.deserialize_str(StringVisitor)?;
Osc52::deserialize(Value::String(value)).map(SerdeOsc52).map_err(de::Error::custom)
}
}