_first
- #compdef -first-
- # Mail folder shortcuts - any command starting with "+" should be
- # a mail folder - complete only those which actually exist.
- if [[ "$compstate[context]" = command &&
- $CURRENT -eq 1 &&
- "$PREFIX" = +* ]]
- then
- local thisfolder thisentry expl ret=1
- local readmail unreadmail
- local mailstat
- readmail=( )
- unreadmail=( )
- mailstat=( )
- # Find each mailpath file that exists.
- for thisentry in "$mailpath[@]"
- do
- thisfolder="${thisentry%%\?*}"
- if [[ -s $thisfolder ]]
- then
- # Is it unread mail?
- # element 10 is mtime, element 9 is atime
- stat -A mailstat "$thisfolder"
- if [[ $mailstat[10] -gt $mailstat[9] ]]
- then
- unreadmail=("$unreadmail[@]" "${thisfolder##*/}")
- else
- readmail=("$readmail[@]" "${thisfolder##*/}")
- fi
- fi
- done
- if zsh-version 3.1.7
- then
- # Proper tag-handling completion.
- _tags -C mail-shortcuts unread-mail-folders read-mail-folders
- while _tags
- do
- _requested -J unread-mail-folders expl "unread mail" \
- compadd -P '+' -a unreadmail && ret=0
- _requested -J read-mail-folders expl "read mail" \
- compadd -P '+' -a readmail && ret=0
- (( ret )) || break
- done
- else
- # Just do regular compadds.
- compadd -P '+' -J "new mail folder" \
- -X "These folders contain new mail" \
- -- "${unreadmail[@]}"
- compadd -P '+' -J "mail folder" \
- -X "These folders contain mail" \
- -- "${readmail[@]}"
- fi
- # Skip all remaining completions.
- _compskip=all
- return 0
- fi