diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2010-11-25 15:43:14 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2010-11-25 15:43:14 +0000 |
commit | 2b361ad11671444831fef3b04bd610c26c2e19e9 (patch) | |
tree | b10e67651fa3deebb5b24e175e351e5289676df1 /Completion/Zsh | |
parent | fc6c76519b863f38ab650e0e82fce574c5dc98e1 (diff) | |
download | zsh-2b361ad11671444831fef3b04bd610c26c2e19e9.tar.gz zsh-2b361ad11671444831fef3b04bd610c26c2e19e9.tar.xz zsh-2b361ad11671444831fef3b04bd610c26c2e19e9.zip |
users/15580: fix MIME handler completion on fallthrough
Diffstat (limited to 'Completion/Zsh')
-rw-r--r-- | Completion/Zsh/Function/_zsh-mime-handler | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/Completion/Zsh/Function/_zsh-mime-handler b/Completion/Zsh/Function/_zsh-mime-handler index c11e5aba9..000be2b5c 100644 --- a/Completion/Zsh/Function/_zsh-mime-handler +++ b/Completion/Zsh/Function/_zsh-mime-handler @@ -1,9 +1,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=(${(Q)${(z)"$(zsh-mime-handler -l ${words[2,-1]})"}}) +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 |