27 lines
779 B
Rust
27 lines
779 B
Rust
use serde::{de, Deserialize, Deserializer};
|
|
use toml::Value;
|
|
|
|
use alacritty_config_derive::{ConfigDeserialize, SerdeReplace};
|
|
use alacritty_terminal::term::Osc52;
|
|
|
|
use crate::config::ui_config::StringVisitor;
|
|
|
|
#[derive(ConfigDeserialize, Default, Copy, Clone, Debug, PartialEq)]
|
|
pub struct Terminal {
|
|
/// OSC52 support mode.
|
|
pub osc52: SerdeOsc52,
|
|
}
|
|
|
|
#[derive(SerdeReplace, 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)
|
|
}
|
|
}
|