darcs-2.14.0: contrib/_darcs.zsh
#compdef darcs
## Darcs completion for zsh.
##
## Originally derived from a version by
## Copyright (C) 2009 Nicolas Pouillard
local -a darcs_options darcs_non_options darcs_arguments
if (($CURRENT == 2)); then
compadd -- $(darcs --commands)
else
case "${words[2]}"; in
get|clone)
_urls
;;
esac
case "${words[$CURRENT]}"; in
/*|./*|\~*|../*)
_files
;;
-*)
# advanced zsh (array) parameter expansion fu:
# - ${(f)...} means split into array elements at line endings
# instead of white space
# - ${arr:#pat} drops elements matching pat from arr, whereas
# ${(M)arr:#pat} drops non-matching elements
# - ${arr/pat/repl} replaces pat with repl for all elements of arr
darcs_arguments=(${(f)"$(words[$CURRENT]=--list-options && $words 2>/dev/null)"})
darcs_options=(${${(M)darcs_arguments:#-*}/;/:})
_describe '' darcs_options
;;
*)
darcs_arguments=(${(f)"$(words[$CURRENT]=--list-options && $words 2>/dev/null)"})
darcs_non_options=(${darcs_arguments:#-*})
_multi_parts -i -S ' ' / darcs_non_options
;;
esac
fi