@@ -26,6 +26,14 @@ use helix_core::Position;
27use serde::Deserialize;
27use serde::Deserialize;
29+fn deserialize_duration_millis<'de, D>(deserializer: D) -> Result<Duration, D::Error>
31+ D: serde::Deserializer<'de>,
33+ let millis = u64::deserialize(deserializer)?;
34+ Ok(Duration::from_millis(millis))
29#[derive(Debug, Clone, PartialEq, Deserialize)]
37#[derive(Debug, Clone, PartialEq, Deserialize)]
30#[serde(rename_all = "kebab-case", default)]
38#[serde(rename_all = "kebab-case", default)]
31pub struct Config {
39pub struct Config {
@@ -45,6 +53,9 @@ pub struct Config {
45 pub smart_case: bool,
53 pub smart_case: bool,
46 /// Automatic insertion of pairs to parentheses, brackets, etc. Defaults to true.
54 /// Automatic insertion of pairs to parentheses, brackets, etc. Defaults to true.
47 pub auto_pairs: bool,
55 pub auto_pairs: bool,
56+ /// Time in milliseconds since last keypress before idle timers trigger. Used for autocompletion, set to 0 for instant. Defaults to 400ms.
57+ #[serde(skip_serializing, deserialize_with = "deserialize_duration_millis")]
58+ pub idle_timeout: Duration,
50#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
61#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
@@ -72,6 +83,7 @@ impl Default for Config {
72 middle_click_paste: true,
83 middle_click_paste: true,
73 smart_case: true,
84 smart_case: true,
74 auto_pairs: true,
85 auto_pairs: true,
86+ idle_timeout: Duration::from_millis(400),