diff options
Diffstat (limited to '')
-rw-r--r-- | completions/export | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/completions/export b/completions/export new file mode 100644 index 0000000..8d82361 --- /dev/null +++ b/completions/export @@ -0,0 +1,65 @@ +# bash export completion -*- shell-script -*- + +_export() +{ + local cur prev words cword + _init_completion -n = || return + + local i action=variable remove=false + for ((i = 1; i < cword; i++)); do + case ${words[i]} in + -p) + return + ;; + -*f*) + action=function + ;;& + -*n*) + remove=true + ;; + -*) + continue + ;; + esac + break + done + + if [[ $cur == *=* ]]; then + local ocur=$cur oprev=$prev + prev=${cur%%=*} cur=${cur#*=} + _variables && return + cur=$ocur prev=$oprev + fi + + case $cur in + *=) + local pval=$(quote "$(eval printf %s \"\$\{${cur%=}-\}\")") + # Complete previous value if it's not empty. + if [[ $pval != \'\' ]]; then + COMPREPLY=("$pval") + else + cur=${cur#*=} + _filedir + fi + ;; + *=*) + cur=${cur#*=} + _filedir + ;; + *) + if [[ $cword -eq 1 && $cur == -* ]]; then + COMPREPLY=($(compgen -W '-p $(_parse_usage "$1")' -- "$cur")) + return + fi + local suffix="" + if ! $remove; then + suffix="=" + compopt -o nospace + fi + COMPREPLY=($(compgen -A $action -S "$suffix" -- "$cur")) + ;; + esac +} && + complete -F _export export + +# ex: filetype=sh |