diff --git a/clean_files.txt b/clean_files.txt index 6c6e787e..2b9a870b 100644 --- a/clean_files.txt +++ b/clean_files.txt @@ -93,6 +93,7 @@ plugins/available/hub.plugin.bash plugins/available/jump.plugin.bash plugins/available/node.plugin.bash plugins/available/nodenv.plugin.bash +plugins/available/percol.plugin.bash plugins/available/plenv.plugin.bash plugins/available/pyenv.plugin.bash plugins/available/rbenv.plugin.bash diff --git a/plugins/available/percol.plugin.bash b/plugins/available/percol.plugin.bash index c1fc807c..027dfdc4 100644 --- a/plugins/available/percol.plugin.bash +++ b/plugins/available/percol.plugin.bash @@ -1,3 +1,4 @@ +# shellcheck shell=bash cite about-plugin about-plugin 'Search&Select history with percol' @@ -12,24 +13,20 @@ 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 - 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" - READLINE_POINT=${#l} -} +_command_exists percol || return - -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 +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 fi + +function _replace_by_history() { + local HISTTIMEFORMAT= # Ensure we can parse history properly + #TODO: "${histlines[@]/*( )+([[:digit:]])*( )/}" + local l + l="$(history | tail -r | sed -e 's/^\ *[0-9]*\ *//' | percol --query "${READLINE_LINE:-}")" + READLINE_LINE="${l}" + READLINE_POINT=${#l} +} +bind -x '"\C-r": _replace_by_history'