diff options
| author | Ville Skyttä <ville.skytta@iki.fi> | 2011-11-26 23:28:08 +0200 |
|---|---|---|
| committer | Ville Skyttä <ville.skytta@iki.fi> | 2011-11-26 23:32:30 +0200 |
| commit | afb2fdd010c34283314fc44ec3e7c8dbfea98a47 (patch) | |
| tree | fa4bf34ee8d9d9e49a35125d86b949b197e43054 /completions | |
| parent | 3a7f1d3de38aac9613a3647c3d1db367f34d2084 (diff) | |
| download | bash-completion-afb2fdd010c34283314fc44ec3e7c8dbfea98a47.tar.gz | |
export: Fix many use cases, add option completion.
Diffstat (limited to 'completions')
| -rw-r--r-- | completions/export | 60 |
1 files changed, 48 insertions, 12 deletions
diff --git a/completions/export b/completions/export index 557c52cb..42273a9e 100644 --- a/completions/export +++ b/completions/export @@ -3,23 +3,59 @@ _export() { local cur prev words cword - _init_completion || return + _init_completion -n = || return - case ${words[@]} in - *=\$*) - COMPREPLY=( $( compgen -v -P '$' -- "${cur#*=\$}" ) ) + 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 + + [[ $cur == *=\$* ]] && { cur=${cur#*=}; _variables; } && return + + 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 ;; - *[^=]) - COMPREPLY=( $( compgen -v -S '=' -- "$cur" ) ) + *=*) + cur=${cur#*=} + _filedir ;; - *=) - COMPREPLY=( "$( eval echo -n \"$`echo ${cur%=}`\" | - ( echo -n \' - sed -e 's/'\''/'\''\\\'\'''\''/g' - echo -n \' ) )" ) + *) + 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 -o default -o nospace export +complete -F _export export # ex: ts=4 sw=4 et filetype=sh |
