diff options
Diffstat (limited to 'src/finder')
-rw-r--r-- | src/finder/config.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/finder/config.rs b/src/finder/config.rs new file mode 100644 index 0000000..cb24b5c --- /dev/null +++ b/src/finder/config.rs @@ -0,0 +1,43 @@ +use figment::{providers::Serialized, value, Figment, Metadata, Profile, Provider}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] +pub struct Config { + pub program: String, + pub args: Vec<String>, +} + +impl Config { + pub fn from<T: Provider>(provider: T) -> figment::error::Result<Config> { + Figment::from(provider).extract() + } +} + +impl Default for Config { + fn default() -> Self { + Self { + program: "fzf-tmux".into(), + args: vec![ + "--", + "--multi", + "--print-query", + "-d/", + "--preview-window='right,75%,<80(up,75%,border-bottom)'", + "--preview='sel={}; less ${sel:-{q}} 2>/dev/null'", + ] + .into_iter() + .map(Into::into) + .collect(), + } + } +} + +impl Provider for Config { + fn metadata(&self) -> Metadata { + Metadata::named("Tmuxr finder config") + } + + fn data(&self) -> figment::error::Result<value::Map<Profile, value::Dict>> { + Serialized::defaults(Config::default()).data() + } +} |