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
|
cite about-plugin
|
||||||
about-plugin 'Search&Select history with percol'
|
about-plugin 'Search&Select history with percol'
|
||||||
|
|
||||||
|
|
@ -12,24 +13,26 @@ about-plugin 'Search&Select history with percol'
|
||||||
# Usage
|
# Usage
|
||||||
## C-r to search&select from history
|
## C-r to search&select from history
|
||||||
|
|
||||||
_replace_by_history() {
|
_command_exists percol || return
|
||||||
if command -v tac>/dev/null; then
|
|
||||||
|
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
|
alias _tac=tac
|
||||||
else
|
else
|
||||||
alias _tac="tail -r"
|
alias _tac="tail -r"
|
||||||
fi
|
fi
|
||||||
local l=$(HISTTIMEFORMAT= history | _tac | sed -e 's/^\ *[0-9]*\ *//' | percol --query "$READLINE_LINE")
|
#TODO: "${histlines[@]/*( )+([[:digit:]])*( )/}"
|
||||||
READLINE_LINE="$l"
|
local l="$(history | _tac | sed -e 's/^\ *[0-9]*\ *//' | percol --query "${READLINE_LINE:-}")"
|
||||||
|
READLINE_LINE="${l}"
|
||||||
READLINE_POINT=${#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