From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22165 invoked from network); 21 Feb 2000 20:02:43 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 21 Feb 2000 20:02:43 -0000 Received: (qmail 17483 invoked by alias); 21 Feb 2000 20:02:35 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9826 Received: (qmail 17473 invoked from network); 21 Feb 2000 20:02:32 -0000 To: zsh-workers@sunsite.auc.dk Subject: Re: PATCH: Improved _mailboxes In-reply-to: ""Bart Schaefer""'s message of "Mon, 21 Feb 2000 16:41:01 GMT." <1000221164101.ZM21266@candle.brasslantern.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" Content-ID: <1198.951161250.0@pwstephenson.fsnet.co.uk> Date: Mon, 21 Feb 2000 20:06:22 +0000 From: Peter Stephenson Message-Id: ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <1198.951161250.1@pwstephenson.fsnet.co.uk> "Bart Schaefer" wrote: > } Oh, and I could not apply 9812 and 9815 automatically, I hope this > } patch here applies without problems. Dunno how that happened. > > That could be my trouble, as I was playing with _mailboxes before. Did > anyone else have a problem? I can re-diff against -dev-19 if needed. I had this problem, and in fact with Sven's patch although that's probably due to indifferent success at applying the previousones by hand, something I've never been good at since it requires patience. The last patch applied OK, however. Here's _mailbox as I currently have it to check, and if correct to install for other people with problems. I've attached it, so that it comes out right. What's the correct Content-Type? I've left it as text/plain since it's not actually supposed to be run. I don't know the etiquette on such matters. -- Peter Stephenson ------- =_aaaaaaaaaa0 Content-Type: text/plain; name="Completion/User/_mailboxes"; charset="us-ascii" Content-ID: <1198.951161250.2@pwstephenson.fsnet.co.uk> Content-Description: Completion/User/_mailboxes #autoload #emulate -L zsh setopt localoptions nullglob # This is still needlessly mutt-biased and should be fixed. local -U dirboxes local i j expl muttrc="${muttrc:-~/.muttrc}" files nm="$compstate[nmatches]" local pinedirectory="${pinedirectory:-~/mail}" local maildirectory="${maildirectory:-~/Mail}" if (( ! $+_mailbox_cache )) then typeset -U -g _mailbox_cache typeset -U -g _maildir_cache _mbox_cache _mh_cache _mutt_cache _pine_cache _mailbox_cache=() _mbox_cache=() _maildir_cache=() _mh_cache=() _mutt_cache=() _pine_cache=() [[ -f ${~muttrc:-.} ]] && _mutt_cache=( ${$(grep mailboxes ${~muttrc})[2,-1]} ) _mbox_cache=( ${~maildirectory}/*(^/) ) _pine_cache=( ${~pinedirectory}/**/*(.) ) dirboxes=( ${~maildirectory}/*(/) ) while (( $#dirboxes )); do i=${dirboxes[1]} shift dirboxes if [[ -d "$i/cur" ]]; then _maildir_cache=( "${_maildir_cache[@]}" "$i" ) elif j=( "$i"/<1-> ) && [[ -n "$j" ]]; then _mh_cache=( "${_mh_cache[@]}" "$i" ) else _mbox_cache=( "${_mbox_cache[@]}" "$i"/*(.) ) dirboxes=( $dirboxes $i/*(/) ) fi done [[ -n "$_mutt_cache" || -d ~/.elm || -d ~/.mutt ]] && _mailbox_cache=( \! \< \> ) [[ -n "$mailpath" ]] && _mailbox_cache=( "${_mailbox_cache[@]}" "${(@)mailpath%%\?*}" ) [[ -n "$MAIL" ]] && _mailbox_cache=( "${_mailbox_cache[@]}" $MAIL ) fi # Files for pine must be absolute paths. if [[ "$PREFIX" != (|-f)+* && ( "${curcontext}" = *:(mail|mush|zmail|zmlite):* || ( "${curcontext}" = *:pine:* && "$PREFIX" = (|-f)[/\~]* ) ) ]]; then _tags mailboxes files else _tags mailboxes fi while _tags; do if _requested mailboxes expl 'mailbox specification'; then local mbox_short local -U mbox_names mbox_short=() mbox_names=() case "${curcontext}" in (*:elm:*) # I've probably got this wrong, or at least incomplete mbox_names=( "${_mbox_cache[@]}" "${_mailbox_cache[@]}" ) mbox_short=( \! \< \> ) ;; (*:mail:*) if compset -P '+|-f+'; then mbox_names=( "${(@)_mbox_cache#$~maildirectory/}" ) else mbox_names=( +"${(@)^_mbox_cache#$~maildirectory/}" "${_mailbox_cache[@]}" ) fi ;; (*:mh:*) # I've probably got this wrong, or at least incomplete (( $#_mh_cache )) && _multi_parts "${expl[@]}" / _mh_cache ;; (*:mush:*) if compset -P '+|-f+'; then mbox_names=( "${(@)_mbox_cache#$~maildirectory/}" ) else mbox_names=( +"${(@)^_mbox_cache#$~maildirectory/}" "${_mailbox_cache[@]}" ) mbox_short=( % \& ) fi ;; (*:mutt:*) mbox_names=( "${_mutt_cache[@]}" "${_mailbox_cache[@]}" "${_maildir_cache[@]}" ) mbox_short=( \! \< \> );; (*:pine:*) # Pine is like mail but with no leading `+' to disambiguate; # any files not in $pinedirectory must be absolute paths. mbox_names=( "${(@)_pine_cache#$~pinedirectory/}" "${_mbox_cache[@]}" "${_mailbox_cache[@]}" "${_mh_cache[@]}" ) ;; (*:tkrat:*) # Has a couple of custom formats I haven't programmed for. mbox_names=( "${_mbox_cache[@]}" "${_mailbox_cache[@]}" "${_mh_cache[@]}" ) ;; (*:(zmail|zmlite):*) if compset -P '+|-f+'; then mbox_names=( "${(@)_mbox_cache#$~maildirectory/}" ) else mbox_names=( +"${(@)^_mbox_cache#$~maildirectory/}" "${_mailbox_cache[@]}" "${_mh_cache[@]}" ) mbox_short=( % \& ) fi ;; (*) # Some other program wants mailbox names? Use them all? mbox_names=( "${_mailbox_cache[@]}" "${_mbox_cache[@]}" "${_mh_cache[@]}" "${_mutt_cache[@]}" "${_pine_cache[@]}" ) ;; esac (( $#mbox_names )) && _multi_parts "${expl[@]}" / mbox_names (( $#mbox_short )) && compadd "$expl[@]" - "$mbox_short[@]" fi if _requested files expl 'mailbox file'; then compset -P -f _path_files "$expl[@]" fi [[ nm -ne $compstate[nmatches] ]] && return 0 done return 1 ------- =_aaaaaaaaaa0--