Ville Skyttä c875723bef Include trailing equals sign in options that take arguments that way.
This way it's clearer to users that an argument is expected.  It's
likely that this commit does not catch all such cases, but it should
do it for most of the affected commands I have installed.
2011-05-02 11:45:55 +03:00

80 lines
1.8 KiB
Bash

# bash completion for info
have info || return
_info()
{
local cur prev words cword split
_init_completion -s || return
_expand || return 0
# default completion if parameter looks like a path
if [[ "$cur" == @(*/|[.~])* ]]; then
_filedir
return 0
fi
case $prev in
-k|--apropos|--index-search|-n|--node)
return
;;
-d|--directory)
_filedir -d
return
;;
--dribble|-f|--file|-o|--output|--restore)
_filedir
return
;;
esac
$split && return
if [[ $cur == -* ]]; then
COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
[[ $COMPREPLY == *= ]] && compopt -o nospace
return
fi
local i 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|xz|lzma)} )
COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) )
return 0
} &&
complete -F _info info
# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh