diff options
Diffstat (limited to 'completions/watch')
-rw-r--r-- | completions/watch | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/completions/watch b/completions/watch index efc0a98..443bed3 100644 --- a/completions/watch +++ b/completions/watch @@ -1,19 +1,21 @@ # watch(1) completion -*- shell-script -*- -[[ $OSTYPE == *linux* ]] || return 1 +[[ $OSTYPE == *@(linux|darwin)* ]] || return 1 -_watch() +_comp_cmd_watch() { - local cur prev words cword split - _init_completion -s || return + local cur prev words cword was_split comp_args + _comp_initialize -s -- "$@" || return local offset=0 i + local noargopts='!(-*|*[dn]*)' + # shellcheck disable=SC2254 for ((i = 1; i <= cword; i++)); do case ${words[i]} in - --help | --version | -!(-*)h) + --help | --version | -${noargopts}h) return ;; - --interval | -!(-*)n) + --interval | -${noargopts}n) ((i++)) continue ;; @@ -26,29 +28,30 @@ _watch() done if ((offset > 0)); then - _command_offset $offset + _comp_command_offset $offset return fi + # shellcheck disable=SC2254 case $prev in - --differences | -!(-*)d) + --differences | -${noargopts}d) [[ $cur != -* ]] && - COMPREPLY=($(compgen -W 'cumulative' -- "$cur")) + _comp_compgen -- -W 'cumulative' return ;; - --interval | -!(-*)n) + --interval | -${noargopts}n) return ;; esac - $split && return + [[ $was_split ]] && return if [[ $cur == -* ]]; then - COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + _comp_compgen_help [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi } && - complete -F _watch watch + complete -F _comp_cmd_watch watch # ex: filetype=sh |