From 5b29d3c6e6eade05aae8dc30fefaf4459a324e0d Mon Sep 17 00:00:00 2001 From: Kostas Giapis Date: Mon, 29 Nov 2021 16:55:37 +0200 Subject: [PATCH] Improve performance of 'bash-it enable' completions --- completion/available/bash-it.completion.bash | 23 ++++++-------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/completion/available/bash-it.completion.bash b/completion/available/bash-it.completion.bash index 4fdd72d6..996ed772 100644 --- a/completion/available/bash-it.completion.bash +++ b/completion/available/bash-it.completion.bash @@ -10,20 +10,11 @@ _bash-it-comp-list-available-not-enabled() { subdirectory="$1" - local available_things + local enabled_components all_things available_things - available_things=$(for f in `compgen -G "${BASH_IT}/$subdirectory/available/*.bash" | sort -d`; - do - file_entity=$(basename $f) - - typeset enabled_component=$(command ls "${BASH_IT}/$subdirectory/enabled/"{[0-9]*$BASH_IT_LOAD_PRIORITY_SEPARATOR$file_entity,$file_entity} 2>/dev/null | head -1) - typeset enabled_component_global=$(command ls "${BASH_IT}/enabled/"[0-9]*$BASH_IT_LOAD_PRIORITY_SEPARATOR$file_entity 2>/dev/null | head -1) - - if [ -z "$enabled_component" ] && [ -z "$enabled_component_global" ] - then - basename $f | sed -e 's/\(.*\)\..*\.bash/\1/g' - fi - done) + all_things=$(compgen -G "${BASH_IT}/$subdirectory/available/*.bash" | sed 's|^.*/||') + enabled_components=$(command ls "${BASH_IT}"/{"$subdirectory"/,}enabled/*.bash 2>/dev/null | sed 's|^.*/||; s/^[0-9]*---//g') + available_things=$(echo "$all_things" | sort -d | grep -Fxv "$enabled_components" | sed 's/\(.*\)\..*\.bash/\1/g') COMPREPLY=( $(compgen -W "all ${available_things}" -- ${cur}) ) } @@ -107,15 +98,15 @@ _bash-it-comp() fi case "${file_type}" in alias) - _bash-it-comp-list-${suffix} aliases + _bash-it-comp-list-"${suffix}" aliases return 0 ;; plugin) - _bash-it-comp-list-${suffix} plugins + _bash-it-comp-list-"${suffix}" plugins return 0 ;; completion) - _bash-it-comp-list-${suffix} completion + _bash-it-comp-list-"${suffix}" completion return 0 ;; *)