/bash_completion_lib/complete -o filenames/info
http://github.com/brinkman83/bashrc · #! · 52 lines · 40 code · 12 blank · 0 comment · 0 complexity · 20c2391e071ae4638f3feb5db7552957 MD5 · raw file
- # info(1) completion
- comp_include _expand _filedir _get_cword
- _info()
- {
- local cur infopath UNAME
- COMPREPLY=()
- cur=`_get_cword`
- _expand || return 0
- # default completion if parameter contains /
- if [[ "$cur" == */* ]]; then
- _filedir
- return 0
- fi
- infopath='/usr/share/info'
- if [ "${INFOPATH: -1:1}" == ':' ]; then
- infopath=${INFOPATH}${infopath}
- elif [ ${INFOPATH:+set} ]; then
- infopath=$INFOPATH
- fi
- infopath=$infopath:
- if [ -n "$cur" ]; then
- infopath="${infopath//://$cur* }"
- else
- infopath="${infopath//:// }"
- fi
- # redirect stderr for when path doesn't exist
- COMPREPLY=( $( eval command ls "$infopath" 2>/dev/null ) )
- # weed out directory path names and paths to info pages
- COMPREPLY=( ${COMPREPLY[@]##*/?(:)} )
- # weed out info dir file
- for (( i=0 ; i < ${#COMPREPLY[@]} ; ++i )); do
- if [ "${COMPREPLY[$i]}" == 'dir' ]; then
- unset COMPREPLY[$i];
- fi;
- done
- # strip suffix from info pages
- COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2)} )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) )
- return 0
- } # _info()