#compdef zsh-mime-handler

# Given that the handler is likely to change the start of the command
# line, we'll try to maintain the position from the end of the words
# array.  Hence for example CURRENT gets decremented by one if the
# handler drops off the start.
integer end_offset=$(( ${#words} - CURRENT ))

# zsh-mime-handler -l is supposed to print out the command line
# with quoting to turn it into a full executable line.  So
# we need to use shell splitting to turn it into words and
# then unquoting on those words.
words=(${(z)"$(zsh-mime-handler -l "${(@)words[2,-1]}")"})
# Careful unquoting: we need to keep a '' as a separate word.
words=("${(@Q)words}")

(( CURRENT = ${#words} - end_offset ))

_normal
