diff options
-rw-r--r-- | Completion/User/_mailboxes | 32 | ||||
-rw-r--r-- | Completion/User/_mutt | 39 |
2 files changed, 71 insertions, 0 deletions
diff --git a/Completion/User/_mailboxes b/Completion/User/_mailboxes new file mode 100644 index 000000000..c49aa8185 --- /dev/null +++ b/Completion/User/_mailboxes @@ -0,0 +1,32 @@ +#autoload + +# This is needlessly mutt-biased and should be fixed. + +local expl muttboxes mboxes dirboxes MHboxes maildirboxes muttrc="~/.muttrc" maildirectory="~/Mail" + +test -f "$compconfig[muttrc_path]" && muttrc=$compconfig[muttrc_path] +test -f "$compconfig[maildirectory]" && maildirectory=$compconfig[maildirectory] + +if (( ! $+_mailbox_cache )) then + +test ${muttrc} || test -f ${~muttrc} && muttboxes=( ${(@)$(grep mailboxes ${~muttrc})[2,-1]} ) + +mboxes=(${~maildirectory}/*(^/)) +dirboxes=(${~maildirectory}/*(/)) + +for i in $dirboxes +do +if test -d "${i}/cur" +then +maildirboxes=($maildirboxes $i) +else +MHboxes=($MHboxes $i) +fi +done + +_mailbox_cache=(\! \< \> $muttboxes $mboxes $maildirboxes $MHboxes) + +fi + +_description expl 'mailbox specification' +compadd "$@" "$expl[@]" - "$_mailbox_cache[@]" diff --git a/Completion/User/_mutt b/Completion/User/_mutt new file mode 100644 index 000000000..9155df832 --- /dev/null +++ b/Completion/User/_mutt @@ -0,0 +1,39 @@ +#compdef mutt + +local state line muttrc="~/.muttrc" ret=1 + + _arguments \ + '::recipient:->userhost' \ + '-a:MIME attachment:_files' \ + '-b:BCC recipient:->userhost' \ + '-c:CC recipient:->userhost' \ + '-e:post-init configuration:' \ + '-f+:mailbox:_mailboxes' \ + '-F+:init file:_files' \ + '-h+:help' \ + '-H+:draft file:_files' \ + '-i:include file:_files' \ + '-m+:default mailbox type:(mbox MMDF MH Maildir)' \ + '-n+:bypass system configuration:' \ + '-p+:resume postponed message:' \ + '-R+:open in read-only mode:' \ + '-s+:subject:' \ + '-v+:version:' \ + '-x+:emulate mailx compose:' \ + '-y+:start listing mailboxes:' \ + '-z+:start only if new messages:' \ + '-Z+:open first mailbox with new mail:' && ret=0 + +if [[ "$state" = userhost ]]; then + if compset -P '*@'; then + _description expl 'remote host name' + _hosts "$expl[@]" -q -S, + return + else + _description expl 'login name' + _users "$expl[@]" -q -S@ && ret=0 + fi + fi + +return ret +fi |