Restore bash completion behaviour for bash 4.x

In Pull Request #178, the use of `builtin compopt` as a test condition
is inappropriate.  Use `[[ $(type -t compopt) = "builtin" ]]` instead.

Also clean up formatting of the resulting bash completion script.
This commit is contained in:
Anthony Fok 2015-11-07 04:33:18 -07:00
parent 5c40aa85ca
commit 0e4c02d9cb

View file

@ -60,7 +60,7 @@ __handle_reply()
__debug "${FUNCNAME}"
case $cur in
-*)
if builtin compopt > /dev/null 2>&1; then
if [[ $(type -t compopt) = "builtin" ]]; then
compopt -o nospace
fi
local allflags
@ -70,7 +70,7 @@ __handle_reply()
allflags=("${flags[*]} ${two_word_flags[*]}")
fi
COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") )
if builtin compopt > /dev/null 2>&1; then
if [[ $(type -t compopt) = "builtin" ]]; then
[[ $COMPREPLY == *= ]] || compopt +o nospace
fi
return 0;
@ -220,12 +220,12 @@ func postscript(out *bytes.Buffer, name string) {
}
`, name)
fmt.Fprintf(out, `
if builtin compopt > /dev/null 2>&1; then
fmt.Fprintf(out, `if [[ $(type -t compopt) = "builtin" ]]; then
complete -F __start_%s %s
else
complete -o nospace -F __start_%s %s
fi
`, name, name, name, name)
fmt.Fprintf(out, "# ex: ts=4 sw=4 et filetype=sh\n")
}