[Bash-completion-devel] [SCM] bash-completion branch, master, updated. 1.3-349-ga0834d3
Igor Murzov
e-mail at date.by
Tue Jun 7 23:58:30 UTC 2011
В сообщении от 6 июня 2011 23:59:44 автор Ville Skyttä написал:
> > kcov: New completion
>
> [...]
>
> > + if [[ "$cur" == -* ]]; then
> > + COMPREPLY=( $( compgen -W '$( _parse_help "$1" --help )' --
> > "$cur" ) ) + [[ $COMPREPLY == *= ]] && compopt -o nospace
> > + return 0
> > + fi
>
> Just a minor nit: the above block of code would be better placed after
> option argument completions (i.e. the "case $prev" block and $split &&
> return 0), otherwise bogus completions are produced for option argument
> completions starting with a dash, for example "kcov --pid=-<TAB>"
> (guesswork, I don't have kcov installed or available as a package).
This is sane, thanks. I'll take your advice. But I have a suggestion. To make
completions more correct, after setting COMPREPLY, we can check if some reply
is found, and if not, we can go to default path. Like this:
_installpkg()
{
local cur prev words cword
_init_completion || return
case "$prev" in
--root)
_filedir -d
return 0
;;
esac
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '--warn --root' -- "$cur") )
- return
+ [[ ${#COMPREPLY[@]} -gt 0 ]] && return
fi
_filedir "t[bglx]z"
} && complete -F _installpkg installpkg
This way this function will allow to complete an awful file name like "--
xo.txz". Is that good thing to do?
More information about the Bash-completion-devel
mailing list