about summary refs log tree commit diff
path: root/Completion/Unix/Command/_wc
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_wc')
-rw-r--r--Completion/Unix/Command/_wc26
1 files changed, 26 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_wc b/Completion/Unix/Command/_wc
new file mode 100644
index 000000000..49a03ba2c
--- /dev/null
+++ b/Completion/Unix/Command/_wc
@@ -0,0 +1,26 @@
+#compdef wc gwc
+
+local args
+
+args=(
+  '(-c --bytes)'{-c,--bytes}'[print byte counts]'
+  '(-C -m --chars)'{-m,--chars}'[print character counts]'
+  '(-w --words)'{-w,--words}'[print word counts]'
+  '(-l --lines)'{-l,--lines}'[print line counts]'
+)
+
+if _pick_variant gnu=GNU unix --version; then
+  args+=(
+    '(*)--files0-from=[read NUL-terminated file list from specified file]:file:_files'
+    '(-L --max-line-length)'{-L,--max-line-length}'[print longest line lengths]'
+  )
+else
+  args=( -A "-*" "${(@)args:#(|\(*\))(|\*)--*}" )
+  case $OSTYPE in
+    freebsd*|netbsd*) args+=( '-L[print longest line lengths]' ) ;;
+    openbsd*) args+=( '-h[human readable: use unit suffixes]' ) ;;
+    solaris*) args+=( ${${(M)args:#*-m\[*}//-m\[/-C\[} ) ;;
+  esac
+fi
+
+_arguments -s -S $args '*:file:_files'