set [ {+|-}options | {+|-}o [ option_name ] ] ... [ {+|-}A [ name ] ]
    [ arg ... ]
       Set the options for the shell and/or set the positional parameters,
       or declare and set an array.  If the -s option is given, it causes
       the specified arguments to be sorted before assigning them to the
       positional parameters (or to the array name if -A is used).  With +s
       sort arguments in descending order.  For the meaning of the other
       flags, see zshoptions(1).  Flags may be specified by name using the
       -o option. If no option name is supplied with -o, the current option
       states are printed:  see the description of setopt below for more
       information on the format.  With +o they are printed in a form that
       can be used as input to the shell.

       If the -A flag is specified, name is set to an array containing the
       given args; if no name is specified, all arrays are printed together
       with their values.

       If +A is used and name is an array, the given arguments will replace
       the initial elements of that array; if no name is specified, all
       arrays are printed without their values.

       The behaviour of arguments after -A name or +A name depends on
       whether the option KSH_ARRAYS is set.  If it is not set, all
       arguments following name are treated as values for the array,
       regardless of their form.  If the option is set, normal option
       processing continues at that point; only regular arguments are
       treated as values for the array.  This means that

              set -A array -x -- foo

       sets array to `-x -- foo' if KSH_ARRAYS is not set, but sets the
       array to foo and turns on the option `-x' if it is set.

       If the -A flag is not present, but there are arguments beyond the
       options, the positional parameters are set.  If the option list (if
       any) is terminated by `--', and there are no further arguments, the
       positional parameters will be unset.

       If no arguments and no `--' are given, then the names and values of
       all parameters are printed on the standard output.  If the only
       argument is `+', the names of all parameters are printed.

       For historical reasons, `set -' is treated as `set +xv' and `set -
       args' as `set +xv -- args' when in any other emulation mode than
       zsh's native mode.
