aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/config/mouse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty/src/config/mouse.rs')
-rw-r--r--alacritty/src/config/mouse.rs71
1 files changed, 10 insertions, 61 deletions
diff --git a/alacritty/src/config/mouse.rs b/alacritty/src/config/mouse.rs
index 1a5aec3d..f562ebe0 100644
--- a/alacritty/src/config/mouse.rs
+++ b/alacritty/src/config/mouse.rs
@@ -1,35 +1,26 @@
use std::time::Duration;
use glutin::event::ModifiersState;
-use log::error;
-use serde::{Deserialize, Deserializer};
-use alacritty_terminal::config::{failure_default, Program, LOG_TARGET_CONFIG};
+use alacritty_config_derive::ConfigDeserialize;
+use alacritty_terminal::config::Program;
use crate::config::bindings::ModsWrapper;
-#[serde(default)]
-#[derive(Default, Clone, Debug, Deserialize, PartialEq, Eq)]
+#[derive(ConfigDeserialize, Default, Clone, Debug, PartialEq, Eq)]
pub struct Mouse {
- #[serde(deserialize_with = "failure_default")]
pub double_click: ClickHandler,
- #[serde(deserialize_with = "failure_default")]
pub triple_click: ClickHandler,
- #[serde(deserialize_with = "failure_default")]
pub hide_when_typing: bool,
- #[serde(deserialize_with = "failure_default")]
pub url: Url,
}
-#[serde(default)]
-#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
+#[derive(ConfigDeserialize, Clone, Debug, PartialEq, Eq)]
pub struct Url {
/// Program for opening links.
- #[serde(deserialize_with = "deserialize_launcher")]
pub launcher: Option<Program>,
/// Modifier used to open links.
- #[serde(deserialize_with = "failure_default")]
modifiers: ModsWrapper,
}
@@ -39,34 +30,6 @@ impl Url {
}
}
-fn deserialize_launcher<'a, D>(deserializer: D) -> std::result::Result<Option<Program>, D::Error>
-where
- D: Deserializer<'a>,
-{
- let default = Url::default().launcher;
-
- // Deserialize to generic value.
- let val = serde_yaml::Value::deserialize(deserializer)?;
-
- // Accept `None` to disable the launcher.
- if val.as_str().filter(|v| v.to_lowercase() == "none").is_some() {
- return Ok(None);
- }
-
- match <Option<Program>>::deserialize(val) {
- Ok(launcher) => Ok(launcher),
- Err(err) => {
- error!(
- target: LOG_TARGET_CONFIG,
- "Problem with config: {}; using {}",
- err,
- default.clone().unwrap().program()
- );
- Ok(default)
- },
- }
-}
-
impl Default for Url {
fn default() -> Url {
Url {
@@ -81,33 +44,19 @@ impl Default for Url {
}
}
-#[serde(default)]
-#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
+#[derive(ConfigDeserialize, Clone, Debug, PartialEq, Eq)]
pub struct ClickHandler {
- #[serde(deserialize_with = "deserialize_duration_ms")]
- pub threshold: Duration,
+ threshold: u16,
}
impl Default for ClickHandler {
fn default() -> Self {
- ClickHandler { threshold: default_threshold_ms() }
+ Self { threshold: 300 }
}
}
-fn default_threshold_ms() -> Duration {
- Duration::from_millis(300)
-}
-
-fn deserialize_duration_ms<'a, D>(deserializer: D) -> ::std::result::Result<Duration, D::Error>
-where
- D: Deserializer<'a>,
-{
- let value = serde_yaml::Value::deserialize(deserializer)?;
- match u64::deserialize(value) {
- Ok(threshold_ms) => Ok(Duration::from_millis(threshold_ms)),
- Err(err) => {
- error!(target: LOG_TARGET_CONFIG, "Problem with config: {}; using default value", err);
- Ok(default_threshold_ms())
- },
+impl ClickHandler {
+ pub fn threshold(&self) -> Duration {
+ Duration::from_millis(self.threshold as u64)
}
}