diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2009-03-13 09:59:58 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2009-03-13 09:59:58 +0000 |
commit | 1f37225708285c4e1f343c34c92064bbef68498a (patch) | |
tree | 2bd3ce7c52cc2c291412918a3f10857c36b5b4bc /Completion/Unix/Type/_have_glob_qual | |
parent | b7f4c91597226b5f95f7f153618cf52c665c0b71 (diff) | |
download | zsh-1f37225708285c4e1f343c34c92064bbef68498a.tar.gz zsh-1f37225708285c4e1f343c34c92064bbef68498a.tar.xz zsh-1f37225708285c4e1f343c34c92064bbef68498a.zip |
26723: centralise test for matching glob qualifiers in file completion
Diffstat (limited to 'Completion/Unix/Type/_have_glob_qual')
-rw-r--r-- | Completion/Unix/Type/_have_glob_qual | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Completion/Unix/Type/_have_glob_qual b/Completion/Unix/Type/_have_glob_qual new file mode 100644 index 000000000..d174406df --- /dev/null +++ b/Completion/Unix/Type/_have_glob_qual @@ -0,0 +1,24 @@ +#autoload + +# Test if $1 has glob qualifiers. This is partly magic, partly guesswork, +# wholly flakey. +# +# If $2 is "complete" test if the qualifiers are complete (up to the ")" +# at the end of the word), else that they are incomplete. +# Sets match, mbegin, mend to reflect their location. +# $match[1] is everything up to the start of the qualifiers themselves; +# this may therefore end in "(" or "(#q". +# $match[2] is everything at the start not counting the "(" or "(#q". +# $match[5] is the set of qualifiers themselves, not including a trailing +# parenthesis. +local complete + +[[ $2 = complete ]] && complete=")" + +[[ -z $compstate[quote] && + ( -o bareglobqual && + $1 = (#b)(((*[^\\\$]|)(\\\\)#)\()([^\)\|\~]#)$complete && + ${#match[1]} -gt 1 || + -o extendedglob && + $1 = (#b)(((*[^\\\$]|)(\\\\)#)"(#q")([^\)]#)$complete + ) ]] |