diff options
Diffstat (limited to 'crates/atuin/src/command/client/init/fish.rs')
-rw-r--r-- | crates/atuin/src/command/client/init/fish.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/crates/atuin/src/command/client/init/fish.rs b/crates/atuin/src/command/client/init/fish.rs new file mode 100644 index 00000000..4ec74952 --- /dev/null +++ b/crates/atuin/src/command/client/init/fish.rs @@ -0,0 +1,45 @@ +use atuin_dotfiles::store::AliasStore; +use eyre::Result; + +pub fn init_static(disable_up_arrow: bool, disable_ctrl_r: bool) { + let base = include_str!("../../../shell/atuin.fish"); + + println!("{base}"); + + if std::env::var("ATUIN_NOBIND").is_err() { + const BIND_CTRL_R: &str = r"bind \cr _atuin_search"; + const BIND_UP_ARROW: &str = r"bind -k up _atuin_bind_up +bind \eOA _atuin_bind_up +bind \e\[A _atuin_bind_up"; + const BIND_CTRL_R_INS: &str = r"bind -M insert \cr _atuin_search"; + const BIND_UP_ARROW_INS: &str = r"bind -M insert -k up _atuin_bind_up +bind -M insert \eOA _atuin_bind_up +bind -M insert \e\[A _atuin_bind_up"; + + if !disable_ctrl_r { + println!("{BIND_CTRL_R}"); + } + if !disable_up_arrow { + println!("{BIND_UP_ARROW}"); + } + + println!("if bind -M insert > /dev/null 2>&1"); + if !disable_ctrl_r { + println!("{BIND_CTRL_R_INS}"); + } + if !disable_up_arrow { + println!("{BIND_UP_ARROW_INS}"); + } + println!("end"); + } +} + +pub async fn init(store: AliasStore, disable_up_arrow: bool, disable_ctrl_r: bool) -> Result<()> { + init_static(disable_up_arrow, disable_ctrl_r); + + let aliases = atuin_dotfiles::shell::fish::config(&store).await; + + println!("{aliases}"); + + Ok(()) +} |