From 04d93adfe06bb12a63463dfc9a2d5734ed556c36 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sun, 21 Aug 2016 15:43:33 +1200 Subject: Use dynamic completion if available --- bash/bashrc | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'bash/bashrc') diff --git a/bash/bashrc b/bash/bashrc index a24a34fe..e7973562 100644 --- a/bash/bashrc +++ b/bash/bashrc @@ -108,9 +108,24 @@ fi # Load POSIX shell functions, Bash-specific scripts, and Bash completion files, # in that order -for sh in "$ENV" \ - "$HOME"/.bashrc.d/*.bash \ - "$HOME"/.bash_completion.d/*.bash ; do +for sh in "$ENV" "$HOME"/.bashrc.d/*.bash ; do [[ -e $sh ]] && source "$sh" done unset -v sh + +# If we have dynamic completion loading (Bash>=4.0), use it +if ((BASH_VERSINFO[0] >= 4)) ; then + _completion_loader() { + [[ -n $1 ]] || return + compspec=$HOME/.bash_completion.d/$1.bash + [[ -f $compspec ]] || return + source "$compspec" >/dev/null 2>&1 && return 124 + } + +# If not, load all of the completions up now +else + for sh in "$HOME"/.bash_completion.d/*.bash ; do + [[ -e $sh ]] && source "$sh" + done + unset -v sh +fi -- cgit v1.2.3