summaryrefslogtreecommitdiff
path: root/support/texlab/src/options.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/options.rs')
-rw-r--r--support/texlab/src/options.rs103
1 files changed, 45 insertions, 58 deletions
diff --git a/support/texlab/src/options.rs b/support/texlab/src/options.rs
index 241126d908..cc0058fc68 100644
--- a/support/texlab/src/options.rs
+++ b/support/texlab/src/options.rs
@@ -1,47 +1,32 @@
-use std::path::PathBuf;
+use std::{path::PathBuf, time::Duration};
use regex::Regex;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
+#[serde(default)]
pub struct Options {
- #[serde(default)]
pub root_directory: Option<PathBuf>,
-
- #[serde(default)]
pub aux_directory: Option<PathBuf>,
-
- #[serde(default)]
pub bibtex_formatter: BibtexFormatter,
-
- #[serde(default)]
pub latex_formatter: LatexFormatter,
-
- #[serde(default)]
pub formatter_line_length: Option<i32>,
-
- #[serde(default)]
pub diagnostics: DiagnosticsOptions,
-
- #[serde(default = "default_diagnostics_delay")]
- pub diagnostics_delay: u64,
-
- #[serde(default)]
+ pub diagnostics_delay: DiagnosticsDelay,
pub build: BuildOptions,
-
- #[serde(default)]
pub chktex: ChktexOptions,
-
- #[serde(default)]
pub latexindent: LatexindentOptions,
-
- #[serde(default)]
pub forward_search: ForwardSearchOptions,
}
-fn default_diagnostics_delay() -> u64 {
- 300
+#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
+pub struct DiagnosticsDelay(#[serde(with = "serde_millis")] pub Duration);
+
+impl Default for DiagnosticsDelay {
+ fn default() -> Self {
+ Self(Duration::from_millis(300))
+ }
}
#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
@@ -72,75 +57,77 @@ impl Default for LatexFormatter {
#[derive(Debug, PartialEq, Eq, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
+#[serde(default)]
pub struct LatexindentOptions {
- #[serde(default)]
pub local: Option<String>,
-
- #[serde(default)]
pub modify_line_breaks: bool,
}
#[derive(Debug, PartialEq, Eq, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
+#[serde(default)]
pub struct BuildOptions {
- #[serde(default = "default_build_executable")]
- pub executable: String,
-
- #[serde(default = "default_build_args")]
- pub args: Vec<String>,
-
- #[serde(default)]
- pub is_continuous: bool,
-
- #[serde(default)]
+ pub executable: BuildExecutable,
+ pub args: BuildArgs,
pub on_save: bool,
-
- #[serde(default)]
pub forward_search_after: bool,
}
-fn default_build_executable() -> String {
- "latexmk".to_string()
+#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
+#[serde(transparent)]
+pub struct BuildExecutable(pub String);
+
+impl Default for BuildExecutable {
+ fn default() -> Self {
+ Self("latexmk".to_string())
+ }
}
-fn default_build_args() -> Vec<String> {
- vec![
- "-pdf".to_string(),
- "-interaction=nonstopmode".to_string(),
- "-synctex=1".to_string(),
- "%f".to_string(),
- ]
+#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
+#[serde(transparent)]
+pub struct BuildArgs(pub Vec<String>);
+
+impl Default for BuildArgs {
+ fn default() -> Self {
+ Self(vec![
+ "-pdf".to_string(),
+ "-interaction=nonstopmode".to_string(),
+ "-synctex=1".to_string(),
+ "%f".to_string(),
+ ])
+ }
}
#[derive(Debug, PartialEq, Eq, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
+#[serde(default)]
pub struct ChktexOptions {
- #[serde(default)]
pub on_open_and_save: bool,
-
- #[serde(default)]
pub on_edit: bool,
}
#[derive(Debug, PartialEq, Eq, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
+#[serde(default)]
pub struct ForwardSearchOptions {
- #[serde(default)]
pub executable: Option<String>,
-
- #[serde(default)]
pub args: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
+#[serde(default)]
pub struct DiagnosticsOptions {
- #[serde(default)]
pub allowed_patterns: Vec<DiagnosticsPattern>,
-
- #[serde(default)]
pub ignored_patterns: Vec<DiagnosticsPattern>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DiagnosticsPattern(#[serde(with = "serde_regex")] pub Regex);
+
+#[derive(Debug, PartialEq, Eq, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+#[serde(default)]
+pub struct StartupOptions {
+ pub skip_distro: bool,
+}