On Nov 6, 6:11pm, John wrote:
}
} > doesn't quite generalize if there may be options (words starting with
} > a hyphen) between the command name and the first file. If that is the
} > case, you'll need to do some pre-processing of $words before calling
} > _arguments to determine which position to reference instead of [2].
}
} Yeah, unfortunately I do. I was using _arguments to process those, and
} then zstyle to deal with the files. But I'm not quite understanding how
} to do what you're describing to pre-process them instead of using
} _arguments.
How complicated this needs to be depends on what might appear in the
words preceding the first file.
If there's nothing but options, for example, then you can probably do:
local first_file=$(( ${words[(I)-*]} + 1 ))
which says to start from the end of the array and look backward to
find the index of the first word that DOES start with a hyphen, and
then add one to it. Or, if there might be file names that start with
hyphen, then:
local first_file=$(( ${${words[2,-1]}[(i)[^-]*]} + 1 ))
which says "in the array formed by the second through last elements of
the words array, report the index of the first element that does not
begin with a hyphen" and then add one to compensate for starting at 2.