#compdef scf _scf() { _arguments -s \ '(-r)-r[Recursively inspect referenced files and directories]' \ '(-n)-n[Open candidate number directly]:candidate number:' \ '--[End of options]' \ '1:systemd service:_scf_services' } _scf_services() { local -a services if (( $+commands[systemctl] )); then services=("${(@f)$(systemctl list-unit-files --type=service --no-legend --no-pager 2>/dev/null \ | awk '$1 ~ /\.service$/ {print $1}' \ | sort -u)}") fi if (( ${#services} > 0 )); then _describe -t services 'systemd service' services else _message 'systemd service' fi } _scf "$@"