diff options
| author | Ellie Huxtable <e@elm.sh> | 2021-02-15 23:33:30 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-15 23:33:30 +0000 |
| commit | 41f072a8b443b5a404916598f0c9b7a52f5c05fb (patch) | |
| tree | 449643847a5fee7c290976075a2f6fb36547aca0 /src/shell/atuin.zsh | |
| parent | Satisfy clippy (diff) | |
| download | atuin-41f072a8b443b5a404916598f0c9b7a52f5c05fb.zip | |
Add init command (#12)
* Add init command
This makes setting up the shell part of A'tuin much easier. Eval the
output of "atuin init".
* Update readme, add up binding
Diffstat (limited to 'src/shell/atuin.zsh')
| -rw-r--r-- | src/shell/atuin.zsh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/shell/atuin.zsh b/src/shell/atuin.zsh new file mode 100644 index 00000000..a984428f --- /dev/null +++ b/src/shell/atuin.zsh @@ -0,0 +1,54 @@ +# Source this in your ~/.zshrc +export ATUIN_SESSION=$(atuin uuid) +export ATUIN_HISTORY="atuin history list" +export ATUIN_BINDKEYS="true" + +_atuin_preexec(){ + id=$(atuin history start $1) + export ATUIN_HISTORY_ID="$id" +} + +_atuin_precmd(){ + local EXIT="$?" + + [[ -z "${ATUIN_HISTORY_ID}" ]] && return + + atuin history end $ATUIN_HISTORY_ID --exit $EXIT +} + +_atuin_search(){ + emulate -L zsh + zle -I + + output=$(eval $ATUIN_HISTORY | fzf) + + if [[ -n $output ]] ; then + BUFFER=$output + fi + + zle reset-prompt +} + +_atuin_up_search(){ + emulate -L zsh + zle -I + + output=$(eval $ATUIN_HISTORY | fzf --no-sort --tac) + + if [[ -n $output ]] ; then + BUFFER=$output + fi + + zle reset-prompt +} + +add-zsh-hook preexec _atuin_preexec +add-zsh-hook precmd _atuin_precmd + +zle -N _atuin_search_widget _atuin_search +zle -N _atuin_up_search_widget _atuin_up_search + +if [[ $ATUIN_BINDKEYS == "true" ]]; then + bindkey '^r' _atuin_search_widget + bindkey '^[[A' _atuin_up_search_widget +fi |
