From 0fac6195a623810141de0d62be0b08467b1f2ce5 Mon Sep 17 00:00:00 2001 From: Jed Date: Sun, 23 Mar 2025 18:44:24 +0100 Subject: [PATCH] gets _ZO_FZF_EXTRA_OPTS and add it to default fzf flags --- src/cmd/query.rs | 35 +++++++++++++++-------------------- src/config.rs | 22 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/cmd/query.rs b/src/cmd/query.rs index cd5c4e7..adaeff7 100644 --- a/src/cmd/query.rs +++ b/src/cmd/query.rs @@ -99,26 +99,21 @@ impl Query { fzf.env("FZF_DEFAULT_OPTS", fzf_opts) } else { - fzf.args([ - // Search mode - "--exact", - // Search result - "--no-sort", - // Interface - "--bind=ctrl-z:ignore,btab:up,tab:down", - "--cycle", - "--keep-right", - // Layout - "--border=sharp", // rounded edges don't display correctly on some terminals - "--height=45%", - "--info=inline", - "--layout=reverse", - // Display - "--tabstop=1", - // Scripting - "--exit-0", - ]) - .enable_preview() + let default_args = config::fzf_default_args(); + let args = if let Some(fzf_extra_opts) = config::fzf_extra_opts() { + let extra_fzf_args_list: Vec = fzf_extra_opts + .to_str() + .unwrap_or_default() + .split_whitespace() + .map(|arg| String::from(arg)) + .collect(); + + vec![default_args, extra_fzf_args_list].concat() + } else { + default_args + }; + + fzf.args(args).enable_preview() } .spawn() } diff --git a/src/config.rs b/src/config.rs index e1a5c07..b2cf986 100644 --- a/src/config.rs +++ b/src/config.rs @@ -51,6 +51,28 @@ pub fn fzf_extra_opts() -> Option { env::var_os("_ZO_FZF_EXTRA_OPTS") } +pub fn fzf_default_args() -> Vec { + vec![ + // Search mode + String::from("--exact"), + // Search result + String::from("--no-sort"), + // Interface + String::from("--bind=ctrl-z:ignore,btab:up,tab:down"), + String::from("--cycle"), + String::from("--keep-right"), + // Layout + String::from("--border=sharp"), // rounded edges don't display correctly on some terminals + String::from("--height=45%"), + String::from("--info=inline"), + String::from("--layout=reverse"), + // Display + String::from("--tabstop=1"), + // Scripting + String::from("--exit-0"), + ] +} + pub fn maxage() -> Result { env::var_os("_ZO_MAXAGE").map_or(Ok(10_000.0), |maxage| { let maxage = maxage.to_str().context("invalid unicode in _ZO_MAXAGE")?;