aboutsummaryrefslogtreecommitdiffstats
path: root/crates/turtle/src/command/client/init/zsh.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/turtle/src/command/client/init/zsh.rs')
-rw-r--r--crates/turtle/src/command/client/init/zsh.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/crates/turtle/src/command/client/init/zsh.rs b/crates/turtle/src/command/client/init/zsh.rs
new file mode 100644
index 00000000..38c3086b
--- /dev/null
+++ b/crates/turtle/src/command/client/init/zsh.rs
@@ -0,0 +1,38 @@
+use crate::atuin_client::settings::Tmux;
+
+fn print_tmux_config(tmux: &Tmux) {
+ if tmux.enabled {
+ println!("export ATUIN_TMUX_POPUP_WIDTH='{}'", tmux.width);
+ println!("export ATUIN_TMUX_POPUP_HEIGHT='{}'", tmux.height);
+ } else {
+ println!("export ATUIN_TMUX_POPUP=false");
+ }
+}
+
+pub fn init_static(disable_up_arrow: bool, disable_ctrl_r: bool, tmux: &Tmux) {
+ let base = include_str!("../../../shell/atuin.zsh");
+
+ print_tmux_config(tmux);
+ println!("{base}");
+
+ if std::env::var("ATUIN_NOBIND").is_err() {
+ const BIND_CTRL_R: &str = r"bindkey -M emacs '^r' atuin-search
+bindkey -M viins '^r' atuin-search-viins
+bindkey -M vicmd '/' atuin-search";
+
+ const BIND_UP_ARROW: &str = r"bindkey -M emacs '^[[A' atuin-up-search
+bindkey -M vicmd '^[[A' atuin-up-search-vicmd
+bindkey -M viins '^[[A' atuin-up-search-viins
+bindkey -M emacs '^[OA' atuin-up-search
+bindkey -M vicmd '^[OA' atuin-up-search-vicmd
+bindkey -M viins '^[OA' atuin-up-search-viins
+bindkey -M vicmd 'k' atuin-up-search-vicmd";
+
+ if !disable_ctrl_r {
+ println!("{BIND_CTRL_R}");
+ }
+ if !disable_up_arrow {
+ println!("{BIND_UP_ARROW}");
+ }
+ }
+}