plugins/percol: use `_command_exists`
Addresses bash-it/bash-it#1632 And use `_log_warning`. Alsö, code style cleanup: quote things, handle unbound parameters, &c. Alsö alsö, short-circuit if not installed or inadequate _Bash_ version.pull/1956/head
parent
d6c4c0cc88
commit
2ada414266
|
|
@ -1,3 +1,4 @@
|
|||
# shellcheck shell=bash
|
||||
cite about-plugin
|
||||
about-plugin 'Search&Select history with percol'
|
||||
|
||||
|
|
@ -12,24 +13,26 @@ about-plugin 'Search&Select history with percol'
|
|||
# Usage
|
||||
## C-r to search&select from history
|
||||
|
||||
_replace_by_history() {
|
||||
if command -v tac>/dev/null; then
|
||||
_command_exists percol || return
|
||||
|
||||
if [[ ${BASH_VERSINFO[0]} -lt 4 ]]; then
|
||||
_log_warning "You have to upgrade Bash to Bash v4.x to use the 'percol' plugin."
|
||||
_log_warning "Your current Bash version is $BASH_VERSION."
|
||||
return
|
||||
else
|
||||
bind -x '"\C-r": _replace_by_history'
|
||||
fi
|
||||
|
||||
function _replace_by_history() {
|
||||
local HISTTIMEFORMAT= # Ensure we can parse history properly
|
||||
if _command_exists tac
|
||||
then
|
||||
alias _tac=tac
|
||||
else
|
||||
alias _tac="tail -r"
|
||||
fi
|
||||
local l=$(HISTTIMEFORMAT= history | _tac | sed -e 's/^\ *[0-9]*\ *//' | percol --query "$READLINE_LINE")
|
||||
READLINE_LINE="$l"
|
||||
#TODO: "${histlines[@]/*( )+([[:digit:]])*( )/}"
|
||||
local l="$(history | _tac | sed -e 's/^\ *[0-9]*\ *//' | percol --query "${READLINE_LINE:-}")"
|
||||
READLINE_LINE="${l}"
|
||||
READLINE_POINT=${#l}
|
||||
}
|
||||
|
||||
|
||||
if command -v percol>/dev/null; then
|
||||
current_version=${BASH_VERSION%%[^0-9]*}
|
||||
if [ $current_version -lt 4 ]; then
|
||||
echo -e "\033[91mWarning: You have to upgrade Bash to Bash v4.x to use the 'percol' plugin.\033[m"
|
||||
echo -e "\033[91m Your current Bash version is $BASH_VERSION.\033[m"
|
||||
else
|
||||
bind -x '"\C-r": _replace_by_history'
|
||||
fi
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in New Issue