# postcat(1) completion -*- shell-script -*- proc _postcat { var cur = '', prev = '', words = '', cword = '' _init_completion || return match $prev { with -c _filedir -d return 0 } if [[ $cur == -* ]] { setglobal COMPREPLY = '( '$( compgen -W '$( _parse_usage "$1" )' -- "$cur" ) ) return 0 } var idx = '', qfile = '0' for idx in [$(words[@])] { [[ "$idx" == -q ]] && set qfile = '1' && break } if [[ $qfile -eq 1 ]] { var len = $(#cur), pval = '' set idx = '0' for pval in [$[ mailq !2 >/dev/null | \ sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; s/[* !].*$//]] { if [[ "$cur" == "${pval:0:$len}" ]] { setglobal COMPREPLY[$idx]=$pval set idx = $shExpr('$idx+1') } } return 0 } else { _filedir return 0 } } && complete -F _postcat postcat # ex: ts=4 sw=4 et filetype=sh