| # Programmable bash_completion file for the main office applications |
| # It is based on /etc/profile.d/complete.bash from SUSE Linux 10.1 |
| |
| _def=; _dir=; _file=; _nosp= |
| if complete -o default _nullcommand &> /dev/null ; then |
| _def="-o default" |
| _dir="-o dirnames" |
| _file="-o filenames" |
| fi |
| _minusdd="-d ${_dir}" |
| _minusdf="-d ${_file}" |
| if complete -o nospace _nullcommand &> /dev/null ; then |
| _nosp="-o nospace" |
| _minusdd="${_nosp} ${_dir}" |
| _minusdf="${_nosp} ${_dir}" |
| fi |
| complete -r _nullcommand &> /dev/null |
| |
| # General expanding shell function |
| @OFFICE_SHELL_FUNCTION@ () |
| { |
| # bash `complete' is broken because you can not combine |
| # -d, -f, and -X pattern without missing directories. |
| local c=${COMP_WORDS[COMP_CWORD]} |
| local a="${COMP_LINE}" |
| local e s g=0 cd dc t="" |
| local IFS |
| |
| shopt -q extglob && g=1 |
| test $g -eq 0 && shopt -s extglob |
| # Don't be fooled by the bash parser if extglob is off by default |
| cd='*-?(c)d*' |
| dc='*-d?(c)*' |
| |
| case "${1##*/}" in |
| @BASH_COMPLETION_SUFFIXES_CHECKS@ |
| *) e='!*' |
| esac |
| |
| case "$(complete -p ${1##*/} 2> /dev/null)" in |
| *-d*) ;; |
| *) s="-S/" |
| esac |
| |
| IFS=' |
| ' |
| case "$c" in |
| \$\(*\)) eval COMPREPLY=\(${c}\) ;; |
| \$\(*) COMPREPLY=($(compgen -c -P '$(' -S ')' -- ${c#??})) ;; |
| \`*\`) eval COMPREPLY=\(${c}\) ;; |
| \`*) COMPREPLY=($(compgen -c -P '\`' -S '\`' -- ${c#?})) ;; |
| \$\{*\}) eval COMPREPLY=\(${c}\) ;; |
| \$\{*) COMPREPLY=($(compgen -v -P '${' -S '}' -- ${c#??})) ;; |
| \$*) COMPREPLY=($(compgen -v -P '$' -- ${c#?})) ;; |
| \~*/*) COMPREPLY=($(compgen -f -X "$e" -- ${c})) ;; |
| \~*) COMPREPLY=($(compgen -u ${s} -- ${c})) ;; |
| *@*) COMPREPLY=($(compgen -A hostname -P '@' -S ':' -- ${c#*@})) ;; |
| *[*?[]*) COMPREPLY=($(compgen -G "${c}")) ;; |
| *[?*+\!@]\(*\)*) |
| if test $g -eq 0 ; then |
| COMPREPLY=($(compgen -f -X "$e" -- $c)) |
| test $g -eq 0 && shopt -u extglob |
| return |
| fi |
| COMPREPLY=($(compgen -G "${c}")) ;; |
| *) |
| if test "$c" = ".." ; then |
| COMPREPLY=($(compgen -d -X "$e" -S / ${_nosp} -- $c)) |
| else |
| for s in $(compgen -f -X "$e" -- $c) ; do |
| if test -d $s ; then |
| COMPREPLY=(${COMPREPLY[@]} $(compgen -f -X "$e" -S / -- $s)) |
| elif test -z "$t" ; then |
| COMPREPLY=(${COMPREPLY[@]} $s) |
| else |
| case "$(file -b $s 2> /dev/null)" in |
| $t) COMPREPLY=(${COMPREPLY[@]} $s) ;; |
| esac |
| fi |
| done |
| fi ;; |
| esac |
| test $g -eq 0 && shopt -u extglob |
| } |
| |
| |
| complete -d -X '.[^./]*' -F @OFFICE_SHELL_FUNCTION@ ${_file} \ |
| @BASH_COMPLETION_OOO_APPS@ |
| |
| unset _def _dir _file _nosp _minusdd _minusdf |