Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

PATCH: multiple mailbox lines in muttrc and more



> +    _mutt_cache=( ${${(M)${(f)"$(<${~muttrc})"}:#mailboxes *}#mailboxes *} )

Oops, splitting problem.

In other news, this seems to work for completion of

mutt -f+
mutt -f=
mutt -f +

but not

mutt -f \=


Meaning mutt -f \=<TAB> will complete the fake mailboxes I put into a fake
muttrc to test this, but my ~/Mail/components file, for instance, which
is happily completed by the other three forms, much to my annoyance.

I'm sure that there are other problems with this that I've failed to notice.

Index: Completion/User/_mailboxes
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/User/_mailboxes,v
retrieving revision 1.3
diff -u -r1.3 _mailboxes
--- Completion/User/_mailboxes	2000/06/22 02:37:45	1.3
+++ Completion/User/_mailboxes	2000/06/22 04:01:24
@@ -23,6 +23,12 @@
       else
         _tags mailboxes files
       fi;;
+    (*:mutt:*)
+      if [[ "$PREFIX" == (|-f)[+=]* ]]; then
+	_tags mailboxes
+      else
+        _tags mailboxes files
+      fi;;
     (*:pine:*)
       # Files for pine must be absolute paths.
       if [[ "$PREFIX" == (|-f)[/\~]* ]]; then
@@ -43,7 +49,7 @@
     _requested mailboxes expl 'mailbox specification' _mua_mailboxes && ret=0
 
     if _requested files expl 'mailbox file'; then
-      [[ "${curcontext}" != *:(mail|mush|zmail|zmlite):* ]] &&
+      [[ "${curcontext}" != *:(mail|mush|mutt|zmail|zmlite):* ]] &&
 	compset -P -f
       _files "$expl[@]" && ret=0
     fi
@@ -65,7 +71,7 @@
 
 
   [[ -f ${~muttrc:-.} ]] &&
-    _mutt_cache=( ${${(M)${(f)"$(<${~muttrc})"}:#mailboxes *}#mailboxes *} )
+    _mutt_cache=( ${=${(M)${(f)"$(<${~muttrc})"}:#mailboxes *}#mailboxes *} )
 
 
   _mbox_cache=( ${~maildirectory}/*(^/) )
@@ -127,9 +133,16 @@
       fi
       ;;
     (*:mutt:*)
+      if compset -P '='; then
+        mbox_names=( "${_mutt_cache[@]#[+=]}" "${(@)_mbox_cache#$~maildirectory/}" "${(@)_maildir_cache#$~maildirectory/}" "${(@)_mh_cache#$~maildirectory/}")
+      elif compset -P +; then
+        mbox_names=( "${_mutt_cache[@]#[+=]}" "${(@)_mbox_cache#$~maildirectory/}" "${(@)_maildir_cache#$~maildirectory/}" "${(@)_mh_cache#$~maildirectory/}")
+      else
       mbox_names=( "${_mutt_cache[@]}" "${_mailbox_cache[@]}"
-		   "${_maildir_cache[@]}" )
-      mbox_short=( \! \< \> );;
+		   "${_maildir_cache[@]}" "${_mh_cache[@]}" )
+      mbox_short=( \! \< \> )
+      fi
+      ;;
     (*:pine:*)
       # Pine is like mail but with no leading `+' to disambiguate;
       # any files not in $pinedirectory must be absolute paths.



Messages sorted by: Reverse Date, Date, Thread, Author