about summary refs log tree commit diff
path: root/Completion/Zsh/Command/_alias
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Zsh/Command/_alias')
-rw-r--r--Completion/Zsh/Command/_alias23
1 files changed, 23 insertions, 0 deletions
diff --git a/Completion/Zsh/Command/_alias b/Completion/Zsh/Command/_alias
new file mode 100644
index 000000000..be4aa60bf
--- /dev/null
+++ b/Completion/Zsh/Command/_alias
@@ -0,0 +1,23 @@
+#compdef alias
+
+local curcontext="$curcontext" state line expl type suf
+typeset -A opt_args
+
+_arguments -C -s -A "-*" -S \
+  '(-r +r)-+g[list or define global aliases]' \
+  '(-g +g)-+r[list or define regular aliases]' \
+  '-+m[print aliases matching specified pattern]' \
+  '-L[print each alias in the form of calls to alias]' \
+  '*::alias definition:->defn'
+
+if [[ -n "$state" ]]; then
+  if compset -P 1 '*='; then
+    compset -q
+    _normal
+  else
+    compset -S '=*' || suf='='
+    type=( ${opt_args[(i)[-+][gr]]#?} )
+    (( $#type )) && type=( -s $type )
+    _wanted alias expl 'alias definition' _aliases -S "$suf" "$type[@]"
+  fi
+fi