about summary refs log tree commit diff
path: root/Completion/Unix/Type/_have_glob_qual
blob: 7b558bfd514ffcf3fca881a22c409b690378caf9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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] &&
  ( $_comp_caller_options[bareglobqual] == on &&
       $1 = (#b)(((*[^\\\$]|)(\\\\)#)\()([^\)\|\~]#)$complete &&
       ${#match[1]} -gt 1 ||
     $_comp_caller_options[extendedglob] == on &&
       $1 = (#b)(((*[^\\\$]|)(\\\\)#)"(#q")([^\)]#)$complete
    ) ]]