Split man completion to contrib/man
This commit is contained in:
parent
b85df3b488
commit
e6b7e5ec64
1
CHANGES
1
CHANGES
@ -27,6 +27,7 @@ bash-completion (1.x)
|
|||||||
* Split apt-cache and apt-get completions to contrib/apt
|
* Split apt-cache and apt-get completions to contrib/apt
|
||||||
* Split rpm-related completions to contrib/rpm
|
* Split rpm-related completions to contrib/rpm
|
||||||
* Split cvs-related completions to contrib/cvs
|
* Split cvs-related completions to contrib/cvs
|
||||||
|
* Split man completion to contrib/man
|
||||||
|
|
||||||
[ Ville Skyttä ]
|
[ Ville Skyttä ]
|
||||||
* Split yum and yum-arch completion into contrib/yum.
|
* Split yum and yum-arch completion into contrib/yum.
|
||||||
|
@ -60,6 +60,7 @@ bashcomp_DATA = contrib/ant \
|
|||||||
contrib/lvm \
|
contrib/lvm \
|
||||||
contrib/lzop \
|
contrib/lzop \
|
||||||
contrib/make \
|
contrib/make \
|
||||||
|
contrib/man \
|
||||||
contrib/mc \
|
contrib/mc \
|
||||||
contrib/mailman \
|
contrib/mailman \
|
||||||
contrib/mcrypt \
|
contrib/mcrypt \
|
||||||
|
@ -1001,82 +1001,6 @@ _insmod()
|
|||||||
complete -F _insmod $filenames insmod modprobe modinfo
|
complete -F _insmod $filenames insmod modprobe modinfo
|
||||||
}
|
}
|
||||||
|
|
||||||
# man(1) completion
|
|
||||||
#
|
|
||||||
[ $USERLAND = GNU -o $UNAME = Darwin \
|
|
||||||
-o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \
|
|
||||||
-o $UNAME = OpenBSD ] &&
|
|
||||||
_man()
|
|
||||||
{
|
|
||||||
local cur prev sect manpath manext mansect uname
|
|
||||||
|
|
||||||
manext="@([0-9lnp]|[0-9][px]|man|3pm)?(.@(gz|bz2|lzma))"
|
|
||||||
mansect="@([0-9lnp]|[0-9][px]|3pm)"
|
|
||||||
|
|
||||||
COMPREPLY=()
|
|
||||||
cur=`_get_cword`
|
|
||||||
prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
||||||
|
|
||||||
if [[ "$prev" == -l ]]; then
|
|
||||||
_filedir $manext
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
_expand || return 0
|
|
||||||
|
|
||||||
# file based completion if parameter contains /
|
|
||||||
if [[ "$cur" == */* ]]; then
|
|
||||||
_filedir $manext
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
uname=$( uname -s )
|
|
||||||
if [[ $uname == @(Linux|GNU|GNU/*|FreeBSD|Cygwin|CYGWIN_*) ]]; then
|
|
||||||
manpath=$( manpath 2>/dev/null || command man --path )
|
|
||||||
else
|
|
||||||
manpath=$MANPATH
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$manpath" ]; then
|
|
||||||
COMPREPLY=( $( compgen -c -- $cur ) )
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# determine manual section to search
|
|
||||||
[[ "$prev" == $mansect ]] && sect=$prev || sect='*'
|
|
||||||
|
|
||||||
manpath=$manpath:
|
|
||||||
if [ -n "$cur" ]; then
|
|
||||||
manpath="${manpath//://*man$sect/$cur* } ${manpath//://*cat$sect/$cur* }"
|
|
||||||
else
|
|
||||||
manpath="${manpath//://*man$sect/ } ${manpath//://*cat$sect/ }"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# redirect stderr for when path doesn't exist
|
|
||||||
COMPREPLY=( $( eval command ls "$manpath" 2>/dev/null ) )
|
|
||||||
# weed out directory path names and paths to man pages
|
|
||||||
COMPREPLY=( ${COMPREPLY[@]##*/?(:)} )
|
|
||||||
# strip suffix from man pages
|
|
||||||
COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2|lzma)} )
|
|
||||||
COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) )
|
|
||||||
|
|
||||||
if [[ "$prev" != $mansect ]]; then
|
|
||||||
# File based completion for the rest, prepending ./ if needed
|
|
||||||
# (man 1.6f needs that for man pages in current dir)
|
|
||||||
local start=${#COMPREPLY[@]}
|
|
||||||
_filedir $manext
|
|
||||||
for (( i=$start; i < ${#COMPREPLY[@]}; i++ )); do
|
|
||||||
[[ ${COMPREPLY[i]} == */* ]] || COMPREPLY[i]=./${COMPREPLY[i]}
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
[ $USERLAND = GNU -o $UNAME = Darwin \
|
|
||||||
-o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \
|
|
||||||
-o $UNAME = OpenBSD ] && \
|
|
||||||
complete -F _man $filenames man apropos whatis
|
|
||||||
|
|
||||||
# renice(8) completion
|
# renice(8) completion
|
||||||
#
|
#
|
||||||
_renice()
|
_renice()
|
||||||
|
75
contrib/man
Normal file
75
contrib/man
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# man(1) completion
|
||||||
|
#
|
||||||
|
[ $USERLAND = GNU -o $UNAME = Darwin \
|
||||||
|
-o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \
|
||||||
|
-o $UNAME = OpenBSD ] &&
|
||||||
|
_man()
|
||||||
|
{
|
||||||
|
local cur prev sect manpath manext mansect uname
|
||||||
|
|
||||||
|
manext="@([0-9lnp]|[0-9][px]|man|3pm)?(.@(gz|bz2|lzma))"
|
||||||
|
mansect="@([0-9lnp]|[0-9][px]|3pm)"
|
||||||
|
|
||||||
|
COMPREPLY=()
|
||||||
|
cur=`_get_cword`
|
||||||
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||||
|
|
||||||
|
if [[ "$prev" == -l ]]; then
|
||||||
|
_filedir $manext
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
_expand || return 0
|
||||||
|
|
||||||
|
# file based completion if parameter contains /
|
||||||
|
if [[ "$cur" == */* ]]; then
|
||||||
|
_filedir $manext
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
uname=$( uname -s )
|
||||||
|
if [[ $uname == @(Linux|GNU|GNU/*|FreeBSD|Cygwin|CYGWIN_*) ]]; then
|
||||||
|
manpath=$( manpath 2>/dev/null || command man --path )
|
||||||
|
else
|
||||||
|
manpath=$MANPATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$manpath" ]; then
|
||||||
|
COMPREPLY=( $( compgen -c -- $cur ) )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# determine manual section to search
|
||||||
|
[[ "$prev" == $mansect ]] && sect=$prev || sect='*'
|
||||||
|
|
||||||
|
manpath=$manpath:
|
||||||
|
if [ -n "$cur" ]; then
|
||||||
|
manpath="${manpath//://*man$sect/$cur* } ${manpath//://*cat$sect/$cur* }"
|
||||||
|
else
|
||||||
|
manpath="${manpath//://*man$sect/ } ${manpath//://*cat$sect/ }"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# redirect stderr for when path doesn't exist
|
||||||
|
COMPREPLY=( $( eval command ls "$manpath" 2>/dev/null ) )
|
||||||
|
# weed out directory path names and paths to man pages
|
||||||
|
COMPREPLY=( ${COMPREPLY[@]##*/?(:)} )
|
||||||
|
# strip suffix from man pages
|
||||||
|
COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2|lzma)} )
|
||||||
|
COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) )
|
||||||
|
|
||||||
|
if [[ "$prev" != $mansect ]]; then
|
||||||
|
# File based completion for the rest, prepending ./ if needed
|
||||||
|
# (man 1.6f needs that for man pages in current dir)
|
||||||
|
local start=${#COMPREPLY[@]}
|
||||||
|
_filedir $manext
|
||||||
|
for (( i=$start; i < ${#COMPREPLY[@]}; i++ )); do
|
||||||
|
[[ ${COMPREPLY[i]} == */* ]] || COMPREPLY[i]=./${COMPREPLY[i]}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
[ $USERLAND = GNU -o $UNAME = Darwin \
|
||||||
|
-o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \
|
||||||
|
-o $UNAME = OpenBSD ] && \
|
||||||
|
complete -F _man $filenames man apropos whatis
|
Loading…
x
Reference in New Issue
Block a user