add defaults for missing config options (#66)

* add defaults for missing config options

* Moved default value functions to an `impl` block of `Config`

---------

Co-authored-by: Kirottu <arnovaara@gmail.com>
This commit is contained in:
Ching Pei Yang 2023-07-24 15:13:17 +02:00 committed by GitHub
parent c65bcc3c0b
commit 883ef4be2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -20,40 +20,83 @@ use wl_clipboard_rs::copy;
#[anyrun_macros::config_args]
#[derive(Deserialize)]
struct Config {
#[serde(default = "Config::default_x")]
x: RelativeNum,
#[serde(default = "Config::default_y")]
y: RelativeNum,
#[serde(default = "Config::default_width")]
width: RelativeNum,
#[serde(default = "Config::default_height")]
height: RelativeNum,
#[serde(default = "Config::default_plugins")]
plugins: Vec<PathBuf>,
#[serde(default)]
hide_icons: bool,
#[serde(default)]
hide_plugin_info: bool,
#[serde(default)]
ignore_exclusive_zones: bool,
#[serde(default)]
close_on_click: bool,
#[serde(default)]
show_results_immediately: bool,
#[serde(default)]
max_entries: Option<usize>,
#[serde(default = "Config::default_layer")]
layer: Layer,
}
impl Config {
fn default_x() -> RelativeNum {
RelativeNum::Fraction(0.5)
}
fn default_y() -> RelativeNum {
RelativeNum::Absolute(0)
}
fn default_width() -> RelativeNum {
RelativeNum::Fraction(0.5)
}
fn default_height() -> RelativeNum {
RelativeNum::Absolute(0)
}
fn default_plugins() -> Vec<PathBuf> {
vec![
"libapplications.so".into(),
"libsymbols.so".into(),
"libshell.so".into(),
"libtranslate.so".into(),
]
}
fn default_layer() -> Layer {
Layer::Overlay
}
}
impl Default for Config {
fn default() -> Self {
Self {
x: RelativeNum::Fraction(0.5),
y: RelativeNum::Absolute(0),
width: RelativeNum::Fraction(0.4),
height: RelativeNum::Absolute(0),
plugins: vec![
"libapplications.so".into(),
"libsymbols.so".into(),
"libshell.so".into(),
"libtranslate.so".into(),
],
x: Self::default_x(),
y: Self::default_y(),
width: Self::default_width(),
height: Self::default_height(),
plugins: Self::default_plugins(),
hide_icons: false,
hide_plugin_info: false,
ignore_exclusive_zones: false,
close_on_click: false,
show_results_immediately: false,
max_entries: None,
layer: Layer::Overlay,
layer: Self::default_layer(),
}
}
}