-#!/bin/sh
+#! /bin/sh
#
-# Generates COMPLETION-BASH from man/mh-chart.man.
+# Generates bash_completion_nmh from man/mh-chart.man.
#
# This code is Copyright (c) 2016, by the authors of nmh.
# See the COPYRIGHT file in the root directory of the nmh
mhchart=man/mh-chart.man
#### Extract switches for nmh program.
-switches() {
- local program=$1
+prog_switches() {
+ program=$1
#### Extract lines from just after .B program-name to just before
#### blank line, and then only those that start with .RB, e.g.,
cat <<'EOF'
# bash completions for nmh commands -*- shell-script -*-
-# This file was generated by COMPLETION-BASH-gen.
+# This file was generated by etc/bash_completion_nmh-gen.
#
# This code is Copyright (c) 2016, by the authors of nmh.
# See the COPYRIGHT file in the root directory of the nmh
local -a switches
COMPREPLY=()
+ #### Complete filenames.
+ compopt -o default
case ${COMP_WORDS[COMP_CWORD]} in
-*) case $1 in
programs=`egrep '\.B [^\-]' "$mhchart" | \
sed -e 's/^\.B //' -e 's/ .*//' -e 's|%[^%]*%/||' -e 's/\\-/-/'`
for program in $programs; do
- switches=`switches "$program"`
+ switches=`prog_switches "$program"`
# Support mime as alias for mhbuild.
[ "$program" = mhbuild ] && program='mhbuild|mime'
printf ' %s) switches=(%s) ;;\n' "$program" "$switches"
+*) switches=($(folder -all -fast -recurse | sed 's/^/+/')) ;;
- [flc.np]*) switches=(first last cur . next prev) ;;
+ #### Complete special message names, except after -file. The compopt -o default above provides filename completions. Assume that -file was fully completed, so don't need to match -fil, etc.
+ [flc.np]*) [ ${COMP_CWORD:-0} -lt 2 -o ${COMP_WORDS[$(($COMP_CWORD - 1))]} != -file ] &&
+ switches=(first last cur . next prev) ;;
esac
- #### Special case.
+ #### Special case: add "new" to mhpath's completions.
[ $1 = mhpath ] && switches=("${switches[*]}" + new)
COMPREPLY=($(compgen -W "${switches[*]}" -- ${COMP_WORDS[COMP_CWORD]}))