1#autoload 2 3local expl maintype 4local -a default_type_files type_files match mbegin mend 5integer ind 6 7default_type_files=(~/.mime.types /etc/mime.types) 8 9# This is the same style as used by zsh-mime-setup, with a different 10# context. 11if zstyle -a ":completion:${curcontext}:" mime-types type_files; then 12 while (( (ind = ${type_files[(I)+]}) > 0 )); do 13 type_files[$ind]=($default_type_files) 14 done 15else 16 type_files=($default_type_files) 17fi 18 19# 20# Handle two different mime type formats; the simple 21# format: 22# application/x-pws-frobnicate psf pwsf 23# and the extended format 24# type=application/x-pws-frobnicate \ 25# desc="PWS frobnicated widget" \ 26# exts="pwsf,psf" 27# which Netscape seems to like. 28# 29 30if [[ $PREFIX = (#b)([^/]##)/* ]]; then 31 # Search for subtype. 32 maintype=$match[1] 33 compset -p $(( ${#maintype} + 1 )) 34 _wanted mime-subtypes expl 'MIME subtype' \ 35 compadd -- $(sed -ne "s%^\(type=\|\)${maintype}/\([^ ]*\).*$%\2%p" \ 36 $type_files) 37else 38 # Search for main type. 39 _wanted mime-types expl 'MIME type' \ 40 compadd -S/ -- $(sed -ne "s/^type=//" \ 41 -e "s%^\(${PREFIX:-[a-z]}[^=\"]*\)/.*$%\1%p" $type_files) 42fi 43