--- /dev/null
+#!/usr/bin/env bash
+
+_bash-it-comp-enable-disable()
+{
+ local enable_disable_args="alias plugin completion"
+ COMPREPLY=( $(compgen -W "${enable_disable_args}" -- ${cur}) )
+}
+
+_bash-it-comp-list-available-not-enabled()
+{
+ subdirectory="$1"
+
+ local available_things=$(for f in `ls -1 $BASH_IT/$subdirectory/available/*.bash`;
+ do
+ if [ ! -e $BASH_IT/$subdirectory/enabled/$(basename $f) ]
+ then
+ basename $f | cut -d'.' -f1
+ fi
+ done)
+
+ COMPREPLY=( $(compgen -W "all ${available_things}" -- ${cur}) )
+}
+
+_bash-it-comp-list-enabled()
+{
+ subdirectory="$1"
+
+ local enabled_things=$(for f in `ls -1 $BASH_IT/$subdirectory/enabled/*.bash`;
+ do
+ basename $f | cut -d'.' -f1
+ done)
+
+ COMPREPLY=( $(compgen -W "all ${enabled_things}" -- ${cur}) )
+}
+
+_bash-it-comp-list-available()
+{
+ subdirectory="$1"
+
+ local enabled_things=$(for f in `ls -1 $BASH_IT/$subdirectory/available/*.bash`;
+ do
+ basename $f | cut -d'.' -f1
+ done)
+
+ COMPREPLY=( $(compgen -W "${enabled_things}" -- ${cur}) )
+}
+
+_bash-it-comp()
+{
+ local cur prev opts prevprev
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ opts="help show enable disable"
+
+ case "${prev}" in
+ show)
+ local show_args="plugins aliases completions"
+ COMPREPLY=( $(compgen -W "${show_args}" -- ${cur}) )
+ return 0
+ ;;
+ help)
+ local help_args="plugins aliases"
+ COMPREPLY=( $(compgen -W "${help_args}" -- ${cur}) )
+ return 0
+ ;;
+ enable)
+ _bash-it-comp-enable-disable
+ return 0
+ ;;
+ disable)
+ _bash-it-comp-enable-disable
+ return 0
+ ;;
+ aliases)
+ prevprev="${COMP_WORDS[COMP_CWORD-2]}"
+
+ case "${prevprev}" in
+ help)
+ _bash-it-comp-list-available aliases
+ return 0
+ ;;
+ esac
+ ;;
+ alias)
+ prevprev="${COMP_WORDS[COMP_CWORD-2]}"
+
+ case "${prevprev}" in
+ enable)
+ _bash-it-comp-list-available-not-enabled aliases
+ return 0
+ ;;
+ disable)
+ _bash-it-comp-list-enabled aliases
+ return 0
+ ;;
+ esac
+ ;;
+ plugin)
+ prevprev="${COMP_WORDS[COMP_CWORD-2]}"
+
+ case "${prevprev}" in
+ enable)
+ _bash-it-comp-list-available-not-enabled plugins
+ return 0
+ ;;
+ disable)
+ _bash-it-comp-list-enabled plugins
+ return 0
+ ;;
+ esac
+ ;;
+ completion)
+ prevprev="${COMP_WORDS[COMP_CWORD-2]}"
+
+ case "${prevprev}" in
+ enable)
+ _bash-it-comp-list-available-not-enabled completion
+ return 0
+ ;;
+ disable)
+ _bash-it-comp-list-enabled completion
+ return 0
+ ;;
+ esac
+ ;;
+ esac
+
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+
+ return 0
+}
+
+complete -F _bash-it-comp bash-it