about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Zsh/Type/_parameters30
1 files changed, 30 insertions, 0 deletions
diff --git a/Completion/Zsh/Type/_parameters b/Completion/Zsh/Type/_parameters
new file mode 100644
index 000000000..097a96760
--- /dev/null
+++ b/Completion/Zsh/Type/_parameters
@@ -0,0 +1,30 @@
+#autoload
+
+# This should be used to complete parameter names if you need some of the
+# extra options of compadd. It completes only non-local parameters.
+
+# If you specify a -g option with a pattern, the pattern will be used to
+# restrict the type of parameters matched.
+
+local expl pattern fakes faked tmp
+
+pattern=(-g \*)
+zparseopts -D -K -E g:=pattern
+
+fakes=()
+faked=()
+if zstyle -a ":completion:${curcontext}:" fake-parameters tmp; then
+  for i in "$tmp[@]"; do
+    if [[ "$i" = *:* ]]; then
+      faked=( "$faked[@]" "$i" )
+    else
+      fakes=( "$fakes[@]" "$i" )
+    fi
+  done
+fi
+
+_wanted parameters expl parameter \
+    compadd "$@" -Q - \
+        "${(@k)parameters[(R)${pattern[2]}~*local*]}" \
+        "$fakes[@]" \
+        "${(@)${(@M)faked:#${~pattern[2]}}%%:*}"