#autoload #emulate -L zsh setopt localoptions nullglob # This is still needlessly mutt-biased and should be fixed. local -U muttboxes mboxes dirboxes MHboxes maildirboxes local i j expl muttrc="${muttrc:-~/.muttrc}" local pinedirectory="${pinedirectory:-~/mail}" local maildirectory="${maildirectory:-~/Mail}" if (( ! $+_mailbox_cache )) then [[ -f ${~muttrc:-.} ]] && muttboxes=( ${$(grep mailboxes ${~muttrc})[2,-1]} ) mboxes=( ${~maildirectory}/*(^/) ${~pinedirectory}/**/*(.) ) dirboxes=( ${~maildirectory}/*(/) ) while (( $#dirboxes )); do i=$dirboxes[1] shift dirboxes if [[ -d "$i/cur" ]]; then maildirboxes=( $maildirboxes $i ) elif j=( $i/<1-> ) && [[ -n "$j" ]]; then MHboxes=( $MHboxes $i ) else mboxes=( $mboxes $i/*(.) ) dirboxes=( $dirboxes $i/*(/) ) fi done [[ -n "$muttboxes" || -d ~/.elm || -d ~/.mutt ]] && _mailbox_cache=(\! \< \> $muttboxes) [[ -n "$mailpath" ]] && _mailbox_cache=($_mailbox_cache ${mailpath//\?*/}) _mailbox_cache=($_mailbox_cache $mboxes $maildirboxes $MHboxes) fi _wanted files expl 'mailbox specification' && compadd "$@" "$expl[@]" - "$_mailbox_cache[@]"