From 1f37225708285c4e1f343c34c92064bbef68498a Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 13 Mar 2009 09:59:58 +0000 Subject: 26723: centralise test for matching glob qualifiers in file completion --- Completion/Unix/Type/_have_glob_qual | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Completion/Unix/Type/_have_glob_qual (limited to 'Completion/Unix/Type/_have_glob_qual') 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 + ) ]] -- cgit 1.4.1