#compdef sh ksh bash zsh csh tcsh rc

if [[ $service == zsh ]]; then
  # try a bit harder
  if [[ ${words[CURRENT-1]} == -o ]]; then
    _options
    # no other possibilities
    return
  fi
fi

if (( CURRENT == ${words[(i)-c]} + 1 )); then
  _cmdstring
else
  local n=${words[(b:2:i)[^-]*]}
  if (( n <= CURRENT )); then
    compset -n $n
    _alternative \
      'files:file:_files' \
      'commands:command:_normal' && return 0
  fi
  _default
fi

local ret=$?

[[ $service == zsh ]] && _arguments -S -s -- '*:' && ret=0

return ret
