diff options
Diffstat (limited to 'support/texlab/src/options.rs')
-rw-r--r-- | support/texlab/src/options.rs | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/support/texlab/src/options.rs b/support/texlab/src/options.rs new file mode 100644 index 0000000000..09eea1110f --- /dev/null +++ b/support/texlab/src/options.rs @@ -0,0 +1,86 @@ +use std::path::PathBuf; + +use serde::{Deserialize, Serialize}; + +#[derive(Debug, PartialEq, Eq, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Options { + pub root_directory: Option<PathBuf>, + + pub aux_directory: Option<PathBuf>, + + #[serde(default)] + pub bibtex_formatter: BibtexFormatter, + + pub formatter_line_length: Option<i32>, + + pub diagnostics_delay: Option<u64>, + + #[serde(default)] + pub build: BuildOptions, + + #[serde(default)] + pub chktex: ChktexOptions, + + pub forward_search: Option<ForwardSearchOptions>, +} + +#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)] +#[serde(rename_all = "kebab-case")] +pub enum BibtexFormatter { + Texlab, + Latexindent, +} + +impl Default for BibtexFormatter { + fn default() -> Self { + Self::Texlab + } +} + +#[derive(Debug, PartialEq, Eq, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct BuildOptions { + pub executable: Option<String>, + + pub args: Option<Vec<String>>, + + #[serde(default)] + pub is_continuous: bool, +} + +impl BuildOptions { + pub fn executable(&self) -> String { + self.executable + .as_ref() + .map(Clone::clone) + .unwrap_or_else(|| "latexmk".to_string()) + } + + pub fn args(&self) -> Vec<String> { + self.args.as_ref().map(Clone::clone).unwrap_or_else(|| { + 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")] +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)] +pub struct ForwardSearchOptions { + pub executable: Option<String>, + pub args: Option<Vec<String>>, +} |