bash/.local/share/blesh/contrib/integration/zoxide.bash
2024-08-18 03:40:38 +02:00

61 lines
1.7 KiB
Bash

# ble/contrib/integration/zoxide.bash (C) 2022, akinomyoga
function ble/contrib/integration:zoxide/completion.advice {
if [[ ! ${_ble_attached-} ]]; then
ble/function#advice/do
return 0
fi
[[ :$comp_type: == *:auto:* || :$comp_type: == *:[maA]:* ]] && return 0
compopt -o noquote
ble/term/leave-for-widget
ble/function#advice/do >/dev/null
ble/term/enter-for-widget
ble/textarea#invalidate
# 単一候補生成の場合は他の候補 (sabbrev 等) を消去して単一確定させる
if ((ADVICE_EXIT==0&&${#COMPREPLY[@]}==1)); then
ble/complete/candidates/clear
[[ $old_cand_count ]] &&
! ble/variable#is-global old_cand_count &&
old_cand_count=0
fi
}
function ble/contrib/integration:zoxide/command.advice {
if [[ ${_ble_attached-} && ${READLINE_MARK+set} ]]; then
ble/bin/stty icanon
ble/function#advice/do
ble/bin/stty -icanon
else
ble/function#advice/do
fi
}
function ble/contrib/integration:zoxide/adjust {
local found=
if ble/is-function _z; then
ble/function#advice around _z ble/contrib/integration:zoxide/completion.advice
found=1
fi
if ble/is-function __zoxide_z_complete; then
ble/function#advice around __zoxide_z_complete ble/contrib/integration:zoxide/completion.advice
found=1
fi
if ble/is-function __zoxide_z; then
ble/function#advice around __zoxide_z ble/contrib/integration:zoxide/command.advice
found=1
fi
if ble/is-function __zoxide_zi; then
ble/function#advice around __zoxide_zi ble/contrib/integration:zoxide/command.advice
found=1
fi
[[ $found ]]
}
if ! ble/contrib/integration:zoxide/adjust; then
ble/bin#has zoxide || return 1
builtin eval -- "$(zoxide init bash)"
ble/contrib/integration:zoxide/adjust
fi