#compdef print
local state expl line eflag pflag
# -e flag available only after -R
eflag="${words[1,CURRENT-1][(r)-*R*]:+-e[enable escapes]}"
# -p flag only relevant if we have a coprocess
(:>&p) 2>/dev/null &&
pflag='(-s -u -z)-p[print arguments to input of coprocess]'
_arguments -C -s -A "-*" -S \
'(-f)-r[ignore escape conventions of echo]' \
'(-r -b -f -m -s -l -N -o -O -i -c -u -p -z -D -P)-R[emulate BSD echo (no escapes, -n & -e flags only)]' \
'-b[recognise bindkey escape sequences]' \
'-m[remove arguments matching specified pattern]' \
'(-r -n -R -l -N -c)-f+[print arguments as for the printf builtin]:format' \
'(-u -p -z)-s[place results in the history list]' \
'(-c -f)-n[do not add a newline to the result]' \
'(-N -c -f)-l[print arguments separated by newlines]' \
'(-n -l -c -f)-N[print arguments separated and terminated by nulls]' \
'(-O)-o[sort arguments in ascending order]' \
'(-o)-O[sort arguments in descending order]' \
'-i[case-insensitive sorting]' \
'(-n -l -N -f -s -z)-a[with -c/-C, print arguments across before down]' \
'(-n -l -N -f -C -s -z)-c[print arguments in columns]' \
'(-n -l -N -f -c -s -z)-C+[print arguments in specified number of columns]:columns' \
'(-s -p -z)-u+[specify file descriptor to print arguments to]:file descriptor:_file_descriptors' \
'(-s -p -u)-z[push arguments onto editing buffer stack]' \
'-D[substitute any arguments which are named directories using ~ notation]' \
'-P[perform prompt expansion]' \
$pflag $eflag '*:default:_default'
Copyright 2K16 - 2K18 Indonesian Hacker Rulez