use std::collections::HashMap;
use derive_getters::Getters;
use once_cell::sync::Lazy;
use serde::{Deserialize, Serialize};
pub static SUPPORTED_VIM_VARIATIONS: Lazy<HashMap<&'static str, &'static str>> = Lazy::new(|| {
let mut m = HashMap::new();
m.insert("vim", "-S");
m.insert("nvim", "-S");
m.insert("neovide", "-- -S");
m.insert("gvim", "-S");
m
});
#[derive(Debug, Deserialize, Serialize, Getters)]
pub struct VimVariant {
active_variant: String,
shell_command: String,
}
impl Default for VimVariant {
fn default() -> Self {
let variant_pair = SUPPORTED_VIM_VARIATIONS
.get_key_value("nvim")
.expect("Failed to get vim variant from lazy loaded hashmap");
Self {
active_variant: String::from(*variant_pair.0),
shell_command: String::from(*variant_pair.1),
}
}
}
impl VimVariant {
pub const fn new(active_variant: String, shell_command: String) -> Self {
Self {
active_variant,
shell_command,
}
}
}
#[derive(Debug, Default, Deserialize, Serialize, Getters)]
pub struct TomlConfigFile {
vim_variant: VimVariant,
}
impl TomlConfigFile {
pub const fn new(vim_variant: VimVariant) -> Self {
Self { vim_variant }
}
}