diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-21 15:43:33 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-21 15:59:37 +1200 |
commit | 04d93adfe06bb12a63463dfc9a2d5734ed556c36 (patch) | |
tree | 7cdcfdf81dbcdcacd53d1854d35b74ae126162a3 /bash/bashrc.d | |
parent | Anticipate Bath versions > 4 (diff) | |
download | dotfiles-04d93adfe06bb12a63463dfc9a2d5734ed556c36.tar.gz dotfiles-04d93adfe06bb12a63463dfc9a2d5734ed556c36.zip |
Use dynamic completion if available
Diffstat (limited to 'bash/bashrc.d')
-rw-r--r-- | bash/bashrc.d/completion.bash | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/bash/bashrc.d/completion.bash b/bash/bashrc.d/completion.bash new file mode 100644 index 00000000..c120878d --- /dev/null +++ b/bash/bashrc.d/completion.bash @@ -0,0 +1,57 @@ +# Various easy completions for Bash builtins; more specific stuff goes in +# ~/.bash_completion.d + +# Bash builtins +complete -A builtin builtin + +# Bash options +complete -A setopt set + +# Commands +complete -A command command complete coproc exec hash type + +# Directories +complete -A directory cd pushd mkdir rmdir + +# Functions +complete -A function function + +# Help topics +complete -A helptopic help + +# Jobspecs +complete -A job disown fg jobs +complete -A stopped bg + +# Readline bindings +complete -A binding bind + +# Shell options +complete -A shopt shopt + +# Signal names +complete -A signal trap + +# Variables +complete -A variable declare export readonly typeset + +# Both functions and variables +complete -A function -A variable unset + +# 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 + } + complete -D -F _completion_loader -o bashdefault -o default + +# 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 |