[virt-tools-list] [PATCH virt-viewer] Fixup bash completion

Jonathon Jongsma jjongsma at redhat.com
Tue May 7 18:32:13 UTC 2019


On Tue, 2019-05-07 at 11:48 -0500, Jonathon Jongsma wrote:
> minor proposed changes
> ---
> Although I'm not an expert in either shell scripting or bash-
> completion, it seems to me that this
> small change accomplishes the same thing, but seems slightly cleaner?
> Can you see any behavior
> difference with my fixup applied?
> 
>  bash-completion/virt-viewer | 15 ++++++---------
>  1 file changed, 6 insertions(+), 9 deletions(-)
> 
> diff --git a/bash-completion/virt-viewer b/bash-completion/virt-
> viewer
> index 40f6e95..fefb82a 100644
> --- a/bash-completion/virt-viewer
> +++ b/bash-completion/virt-viewer
> @@ -13,25 +13,22 @@ _virt_viewer_complete()
>      # arguments, e.g. connection URI (with the default set it's
>      # split into multiple items within the array). Fortunately,
>      # there's a fixup function for the array.
> -    _get_comp_words_by_ref -n "\"'><=;|&(:" -w words -i cword
> -    COMP_WORDS=( "${words[@]}" )
> -    COMP_CWORD=${cword}
> -    cur=${COMP_WORDS[$COMP_CWORD]}
> +    _get_comp_words_by_ref -n "\"'><=;|&(:" -w words -i cword -c cur
>  
>      MODE="--name"
>      ALL="--all"
>      # See what URI is user trying to connect to. Honour that.
> -    for ((c=1; c<=${COMP_CWORD}; c++)); do
> -        case "${COMP_WORDS[c]}" in
> +    for ((c=1; c<=${cword}; c++)); do
> +        case "${words[c]}" in
>              -c|--connect)
> -                if [[ -n "${COMP_WORDS[c+1]}" ]]; then
> -                    URI="${COMP_WORDS[c+1]}"
> +                if [[ -n "${words[c+1]}" ]]; then
> +                    URI="${words[c+1]}"
>                      c=$((++c))
>                  fi
>                  ;;
>  
>              --connect=*)
> -                w=${COMP_WORDS[c]#*=}
> +                w=${words[c]#*=}
>                  if [[ -z "$w" ]] ; then
>                      return
>                  fi


Actually, now that I look at the /usr/share/bash-
completion/bash_completion script (where _get_comp_words_by_ref is
defined), I see that there is a function _init_completion that calls
_get_comp_words_by_ref. I wonder if it wouldn't be simpler to just call
"init_completion -n" instead of _get_comp_words_by_ref. This is the
function that is used by the majority of completion scripts on my
machine...

Jonathon




More information about the virt-tools-list mailing list