summaryrefslogtreecommitdiffstats
path: root/completions/export
diff options
context:
space:
mode:
Diffstat (limited to 'completions/export')
-rw-r--r--completions/export65
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