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