summaryrefslogtreecommitdiff
path: root/Functions/Completion/_mh
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-04-15 18:05:38 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-04-15 18:05:38 +0000
commite74702b467171dbdafb56dfe354794a212e020d9 (patch)
treec295b3e9b2e93e2de10331877442615b0f37e779 /Functions/Completion/_mh
parentc175751b501a3a4cb40ad4787340a597ea769be4 (diff)
downloadzsh-e74702b467171dbdafb56dfe354794a212e020d9.tar.gz
zsh-e74702b467171dbdafb56dfe354794a212e020d9.zip
Initial revision
Diffstat (limited to 'Functions/Completion/_mh')
-rw-r--r--Functions/Completion/_mh70
1 files changed, 70 insertions, 0 deletions
diff --git a/Functions/Completion/_mh b/Functions/Completion/_mh
new file mode 100644
index 000000000..67ce49fd2
--- /dev/null
+++ b/Functions/Completion/_mh
@@ -0,0 +1,70 @@
+#defcomp folder comp inc mark refile repl scan show next prev rmm pick whom mhn mhpath mhpatch
+
+# Completion for all possible MH commands.
+# Alter the following two to your own mh directory and the directory
+# where standard mh library files live. (It works anyway, but this
+# will save a little time.)
+local mymhdir=~/Mail
+local mhlib=/usr/lib/mh
+
+# To be on the safe side, check this exists and if not, get it anyway.
+[[ -d $mymhdir ]] || mymhdir=$(mhpath +)
+
+if [[ -iprefix - ]]; then
+ # get list of options, which MH commands can generate themselves
+ # awk is just too icky to use for this, sorry. send me one if
+ # you come up with it.
+ compadd -m $($COMMAND -help | perl -ne 'if (/^\s*-\(?(\S+)/) {
+ $n = $1;
+ $n =~ s/\)//g;
+ print $n =~ s/^\[([a-z]+)\]// ? "$n\n$1$n\n" : "$n\n";
+ }')
+ return
+elif [[ -iprefix '+' || -iprefix '@' || -current -1 -draftfolder ]]; then
+ # Complete folder names.
+ local mhpath
+ if [[ $IPREFIX != '@' ]]; then
+ [[ $IPREFIX = '+' ]] || IPREFIX=+
+ mhpath=$mymhdir
+ else
+ mhpath=$(mhpath)
+ fi
+
+ # painless, or what?
+ complist -W mhpath -/
+elif [[ -mcurrent -1 -(editor|(whatnow|rmm|show|more)proc) ]]; then
+ complist -c
+elif [[ -current -1 -file ]]; then
+ complist -f
+elif [[ -mcurrent -1 -(form|audit|filter) ]]; then
+ # Need some MH template file, which may be in our own MH directory
+ # or with the standard library.
+ local mhfpath
+ # This is the only place we need mhlib, so leave the test till here.
+ [[ -d $mhlib ]] || { mhlib=$(mhparam mhlproc); mhlib=$mhlib:h; }
+ mhfpath=($mymhdir $mhlib)
+
+ complist -W mhfpath -g '*(.)'
+elif [[ -mcurrent -1 -(no|)cc ]]; then
+ compadd -m all to cc me
+elif [[ -mcurrent -1 -[rw]cache ]]; then
+ compadd -m public private never ask
+else
+ # Generate sequences.
+ local foldnam folddir f
+ for f in $argv; do
+ [[ $f = [@+]* ]] && foldnam=$f
+ done
+ if [[ $foldnam = '+'* ]]; then
+ folddir=$mymhdir/${foldnam#+}
+ elif [[ $foldnam = '@'* ]]; then
+ folddir=$(mhpath)/${foldnam#@}
+ else
+ folddir=$(mhpath)
+ # leaving foldnam empty works here
+ fi
+
+ complist -s '$(mark $foldnam | awk -F: '\''{ print $1 }'\'')'
+ compadd -m reply next cur prev first last all unseen
+ complist -W folddir -g '<->'
+fi