* Rework `atuin init` This allows users to disable the CTRL-R and Up Arrow bindings, independently from one another * Document --disable-{ctrl-r,up-arrow} * Apply suggestions from code review Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com> Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
57 lines
1.4 KiB
Bash
57 lines
1.4 KiB
Bash
# shellcheck disable=SC2034,SC2153,SC2086,SC2155
|
|
|
|
# Above line is because shellcheck doesn't support zsh, per
|
|
# https://github.com/koalaman/shellcheck/wiki/SC1071, and the ignore: param in
|
|
# ludeeus/action-shellcheck only supports _directories_, not _files_. So
|
|
# instead, we manually add any error the shellcheck step finds in the file to
|
|
# the above line ...
|
|
|
|
# Source this in your ~/.zshrc
|
|
autoload -U add-zsh-hook
|
|
|
|
export ATUIN_SESSION=$(atuin uuid)
|
|
export ATUIN_HISTORY="atuin history list"
|
|
|
|
_atuin_preexec() {
|
|
local id
|
|
id=$(atuin history start -- "$1")
|
|
export ATUIN_HISTORY_ID="$id"
|
|
}
|
|
|
|
_atuin_precmd() {
|
|
local EXIT="$?"
|
|
|
|
[[ -z "${ATUIN_HISTORY_ID}" ]] && return
|
|
|
|
(RUST_LOG=error atuin history end --exit $EXIT -- $ATUIN_HISTORY_ID &) >/dev/null 2>&1
|
|
}
|
|
|
|
_atuin_search() {
|
|
emulate -L zsh
|
|
zle -I
|
|
|
|
# Switch to cursor mode, then back to application
|
|
echoti rmkx
|
|
# swap stderr and stdout, so that the tui stuff works
|
|
# TODO: not this
|
|
# shellcheck disable=SC2048
|
|
output=$(RUST_LOG=error atuin search $* -i -- $BUFFER 3>&1 1>&2 2>&3)
|
|
echoti smkx
|
|
|
|
if [[ -n $output ]]; then
|
|
RBUFFER=""
|
|
LBUFFER=$output
|
|
fi
|
|
|
|
zle reset-prompt
|
|
}
|
|
|
|
_atuin_up_search() {
|
|
_atuin_search --shell-up-key-binding
|
|
}
|
|
|
|
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
|