#autoload emulate -L zsh setopt 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 test ${~muttrc} && [[ -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 ]] && _mailbox_cache=(\! \< \> $muttboxes) [[ -n "$mailpath" ]] && _mailbox_cache=($_mailbox_cache ${mailpath//\?*/}) _mailbox_cache=($_mailbox_cache $mboxes $maildirboxes $MHboxes) fi _description expl 'mailbox specification' compadd "$@" "$expl[@]" - "$_mailbox_cache[@]"