diff options
| author | Steven Xu <stevenxxiu@users.noreply.github.com> | 2023-03-27 01:44:06 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-26 15:44:06 +0100 |
| commit | a7cb21a51b393b436c0ca7e09c892ebb3c597ad0 (patch) | |
| tree | d55d1ad07d5d01ccac6f5100bf4d131da748537c /src/command/init.rs | |
| parent | Add musl build (#809) (diff) | |
| download | atuin-a7cb21a51b393b436c0ca7e09c892ebb3c597ad0.zip | |
feat: add *Nushell* support (#788)
* feat: add *Nushell* support
* refactor: use `sh` to swap `STDOUT` and `STDERR` instead of using a temporary file
* feat: include both keybindings, with the current REPL buffer passed to *Atuin*'s
* feat: don't record commands run by keybindings
Diffstat (limited to '')
| -rw-r--r-- | src/command/init.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/command/init.rs b/src/command/init.rs index 585a8281..7cb4b35e 100644 --- a/src/command/init.rs +++ b/src/command/init.rs @@ -21,6 +21,8 @@ pub enum Shell { Bash, /// Fish setup Fish, + /// Nu setup + Nu, } impl Cmd { @@ -90,11 +92,53 @@ bind -M insert \e\[A _atuin_bind_up"; println!("end"); } } + + fn init_nu(&self) { + let full = include_str!("../shell/atuin.nu"); + println!("{full}"); + + if std::env::var("ATUIN_NOBIND").is_err() { + const BIND_CTRL_R: &str = r#"let-env config = ( + $env.config | upsert keybindings ( + $env.config.keybindings + | append { + name: atuin + modifier: control + keycode: char_r + mode: emacs + event: { send: executehostcommand cmd: (_atuin_search_cmd) } + } + ) +) +"#; + const BIND_UP_ARROW: &str = r#"let-env config = ( + $env.config | upsert keybindings ( + $env.config.keybindings + | append { + name: atuin + modifier: none + keycode: up + mode: emacs + event: { send: executehostcommand cmd: (_atuin_search_cmd '--shell-up-key-binding') } + } + ) +) +"#; + if !self.disable_ctrl_r { + println!("{BIND_CTRL_R}"); + } + if !self.disable_up_arrow { + println!("{BIND_UP_ARROW}"); + } + } + } + pub fn run(self) { match self.shell { Shell::Zsh => self.init_zsh(), Shell::Bash => self.init_bash(), Shell::Fish => self.init_fish(), + Shell::Nu => self.init_nu(), } } } |
