summaryrefslogtreecommitdiffstats
path: root/completions/declare
diff options
context:
space:
mode:
Diffstat (limited to 'completions/declare')
-rw-r--r--completions/declare41
1 files changed, 41 insertions, 0 deletions
diff --git a/completions/declare b/completions/declare
new file mode 100644
index 0000000..128cb30
--- /dev/null
+++ b/completions/declare
@@ -0,0 +1,41 @@
+# bash declare completion -*- shell-script -*-
+
+_comp_cmd_declare()
+{
+ local cur prev words cword comp_args
+ _comp_initialize -n := -- "$@" || return
+
+ if [[ $cur == [-+]* ]]; then
+ local opts
+ _comp_compgen -Rv opts usage -c help -s "$1"
+ # Most options also have a '+' form.
+ # We'll exclude the ones that don't with compgen.
+ opts+=("${opts[@]/-/+}")
+ _comp_compgen -- -W "${opts[*]}" -X '+[Ffgp]'
+ return
+ fi
+
+ local i=1
+ while [[ ${words[i]} == [-+]* ]]; do
+ case ${words[i]} in
+ -*[aA]*)
+ _comp_compgen -- -A arrayvar
+ return
+ ;;
+ -*[fF]*)
+ _comp_compgen -- -A function
+ return
+ ;;
+ esac
+ ((i++))
+ done
+ if ((i > 1)); then
+ # There was at least one option and it was not one that limited
+ # operations to functions and array variables
+ _comp_variable_assignments "$cur" && return
+ _comp_compgen -- -A variable
+ fi
+} &&
+ complete -F _comp_cmd_declare declare typeset
+
+# ex: filetype=sh