1 # nmh completion for bash
2 # Copyright 2003 "Wade Richards" <wade@wabyn.net>
3 # Permission granted to redistribute under the BSD license
5 [ "$BASH_COMPLETION" ] || echo "ERROR: COMPLETION-BASH is not intended to be \
6 sourced directly, but rather added to a bash-completion package installation."
11 # args: command comp-word prev-word
12 local command current prev folder origfolder i orig_opts
15 current=${COMP_WORDS[COMP_CWORD]}
16 prev=${COMP_WORDS[COMP_CWORD-1]}
19 orig_opts=$(shopt -p extglob)
22 # Get the folder, if specified
23 for (( i=0; i < ${#COMP_WORDS}-1; i++ ))
25 case "${COMP_WORDS[i]}" in
27 folder=${COMP_WORDS[i]}
28 origfolder=$( folder -f )
35 # Command-line switches for the most common commands.
38 # no sequences or messages
39 options=(-alias -list -nolist -normalize -nonormalize -user
40 -nouser -version -help)
43 options=(-inplace -noinplace -quiet -noquiet -verbose
44 -noverbose -version -help)
47 options=(-form -use -nouse
48 -editor -noedit -whatnowproc -nowhatnowproc
52 options=(-sequence -all -noall -showzero -noshowzero
53 -recurse -norecurse -fast -nofast -alpha -noalpha -version
57 options=(-all -noall -create -nocreate -fast -nofast -header
58 -noheader -recurse -norecurse -total -nototal -list -nolist
59 -push -pop -pack -nopack -print -verbose -noverbose
63 options=(-annotate -noannotate -form
64 -editor -noedit -whatnowproc
69 options=(-audit -noaudit -changecur -nochangecur -form
70 -file -silent -nosilent -truncate -notruncate -width
74 options=(-sequence -add -delete -list -public -nopublic
75 -zero -nozero -version -help)
78 options=(-showmimeproc -header -noheader -checkmime
79 -nocheckmime -version -help)
82 options=(-file -version -help)
85 options=(-and -or -not -lbrace -rbrace --component -cc
86 -date -from -search -subject -to -after -before -datefield
87 -sequence -public -nopublic -zero -nozero -list -nolist
91 options=(-showproc -showmimeproc -header -noheader -checkmime
92 -nocheckmime -version -help)
95 options=(-link -nolink -preserve -nopreserve -unlink
96 -nounlink -src -file -rmmproc -normmproc -version -help)
99 options=(-annotate -noannotate -group -nogroup -cc
100 -nocc -query -noquery -form -filter -nofilter
101 -mime -nomime -editor -noedit -whatnowproc
102 -nowhatnowproc -build -file -version -help)
105 options=(-interactive -nointeractive -version -help)
108 options=(-link -nolink -version -help)
111 options=(-form -header -noheader
112 -width -file -version -help )
115 options=(-showproc -showmimeproc -header -noheader
116 -checkmime -nocheckmime -version -help)
119 options=(-datefield -textfield -notextfield -limit -nolimit
120 -verbose -noverbose -version -help)
123 options=(-help -version -seq)
130 options=( $( folder -all -r -fast | grep -v "^\." | sed "s/^/+/" ) )
135 start=${current/%-*/}
136 options=( $( scan $folder -form "=%(msg)" "${start}-last" ) first prev cur next last )
137 options=( ${options[@]//#/${start}-} )
141 # Message number, or start of range
142 options=( $( scan $folder -form "=%(msg)" ) first prev cur next last )
143 options=( ${options[@]} ${options[@]//%/-} )
147 # special message aliases
148 options=( first prev cur next last unseen )
151 # What about sequences? I can't quite see how to get the list of possible sequences, so I
152 # guess the user will have to type them in the old-fashioned way.
158 COMPREPLY=( $( compgen -W "${options[*]}" -- $current ) )
161 [ "$have" ] && complete -F _nmh ali anno burst comp dist flist flists folder folders forw inc mark mhbuild mhl mhlist mhmail mhparam mhpath mhshow mhstore msgchk next packf pick prev prompter rcvdist rcvpack rcvstore refile repl rmf rmm scan send sendfiles show slocal sortm whatnow