mirror of
https://github.com/jimeh/dotfiles.git
synced 2026-02-19 13:46:41 +00:00
60 lines
1.5 KiB
Bash
60 lines
1.5 KiB
Bash
#
|
|
# atuin
|
|
#
|
|
|
|
if command-exists atuin; then
|
|
# Atuin + FZF integration, stolen/adapted from:
|
|
# - https://github.com/atuinsh/atuin/issues/68
|
|
atuin-setup() {
|
|
export ATUIN_NOBIND="true"
|
|
eval "$(atuin init zsh)"
|
|
|
|
zle -N fzf-atuin-history-widget
|
|
bindkey '^R' fzf-atuin-history-widget
|
|
}
|
|
|
|
fzf-atuin-history-widget() {
|
|
local selected num
|
|
setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases 2>/dev/null
|
|
|
|
# local atuin_opts="--cmd-only --limit ${ATUIN_LIMIT:-5000}"
|
|
local atuin_opts="--cmd-only"
|
|
local fzf_opts=(
|
|
# from $FZF_DEFAULT_OPTS
|
|
--bind=ctrl-k:kill-line
|
|
--bind=ctrl-v:half-page-down
|
|
--bind=alt-v:half-page-up
|
|
--tabstop=4
|
|
--highlight-line
|
|
|
|
# from $FZF_CTRL_R_OPTS
|
|
--tmux=75%
|
|
--border=rounded
|
|
"--preview=echo {}"
|
|
--preview-window=down:3:hidden:wrap
|
|
"--bind=ctrl-/:toggle-preview"
|
|
"--bind=ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort"
|
|
|
|
--tac
|
|
"-n2..,.."
|
|
--tiebreak=index
|
|
"--query=${LBUFFER}"
|
|
"+m"
|
|
"--bind=ctrl-r:reload(atuin search $atuin_opts)"
|
|
)
|
|
|
|
selected=$(atuin search ${atuin_opts} | fzf "${fzf_opts[@]}")
|
|
local ret=$?
|
|
if [ -n "$selected" ]; then
|
|
# the += lets it insert at current pos instead of replacing
|
|
LBUFFER+="${selected}"
|
|
fi
|
|
|
|
zle reset-prompt
|
|
return $ret
|
|
}
|
|
|
|
atuin-setup
|
|
setup-completions atuin "$(mise-which atuin)" atuin gen-completions --shell zsh
|
|
fi
|