summary refs log tree commit diff
path: root/Completion/Zsh/Function/_zsh-mime-handler
blob: 000be2b5ce6e5e3395ad1e09d5adaf6ec7cca1ec (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#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