#compdef service # *:: for last argument looks more like a hack but it is # the simplest way known to me to reset $words and keep # _sub_command happy # we are interested in init service only local ctx="${curcontext/%[^:]#:[^:]#/argument-1:}" zstyle -T ":completion:$ctx" tag-order && \ zstyle ":completion:$ctx" tag-order init - _arguments -s \ '(-d --debug)'{-d,--debug}'[turn debugging on]' \ '(- :)'{-h,--help}'[print usage]' \ '(- :)'{-v,--version}'[print version]' \ '(-)'{-f,--full-restart}'[restart service]' \ '(- :)'{-R,--full-restart-all}'[restart all services]' \ '(- :)'{-s,--status-all}'[print status of all services]' \ ':service name:_services' \ '*::service argument: _init_d'