about summary refs log tree commit diff
path: root/Completion/Unix/Command/_wc
blob: a1897e2894a75cc6c831386792b2dab443618cba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#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]'
    '--total=[when to print a line with total counts]:when:(auto always only never)'
  )
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'