#compdef mutt neomutt

# should pass -S but that doesn't work with -- ending -a
_arguments -s \
  '::recipient:_email_addresses -n mutt' \
  '(- :)-A[expand given alias]:alias:_email_addresses -n mutt' \
  '*-a[attach file using MIME]:*--:file attachment:_files' \
  '*-b[specify a BCC recipient]:BCC recipient:_email_addresses -n mutt' \
  '*-c[specify a CC recipient]:CC recipient:_email_addresses -n mutt' \
  '(- :)-D[print the value of all variables]' \
  '(-x)-E[edit the draft (-H) or include (-i) file]' \
  '-d+[log debugging output to ~/.muttdebug0]:level:(-5 -4 -3 -2 -1 0 1 2 3 4 5)' \
  '-e+[specify a post-init configuration command]:post-init configuration' \
  '-f+[specify mailbox to load]:mailbox: _mailboxes' \
  '-F+[specify an init file]:init file:_files' \
  '(- :)-h[display help]' \
  '-H+[specify a draft file for message]:draft file:_files' \
  '-i+[specify file to include in message]:include file:_files' \
  '-m+[specify default mailbox type]:mailbox type:(mbox MMDF MH Maildir)' \
  '-n[bypass system configuration]' \
  '-p[resume postponed message]' \
  '(- :)-Q+[query a configuration variable]:variable:(${${(f)"$(_call_program variables mutt -D 2>/dev/null)"}%%( is|=)*})' \
  '-R[open in read-only mode]' \
  '-s+[specify a subject]:subject:' \
  '(- :)-v[display mutt version]' \
  '(-E)-x[emulate mailx compose]' \
  '-y[start listing mailboxes]' \
  '-z[start only if new messages]' \
  '-Z[open first mailbox with new mail]'
