diff options
author | Freddy Vulto <fvulto@gmail.com> | 2009-02-15 21:56:01 +0100 |
---|---|---|
committer | Freddy Vulto <fvulto@gmail.com> | 2009-02-15 21:56:01 +0100 |
commit | 20278a41473544d43c51095ba2e118fc7b89c0d5 (patch) | |
tree | 0e9c05b3d1680dbceb6061efed491237bc518a02 | |
parent | d07e282122f3ec3edf207bc75d5aa783ff055c12 (diff) | |
download | bash-completion-20278a41473544d43c51095ba2e118fc7b89c0d5.tar.gz |
Reviewed `to_review/vncviewer':
- added support for case-insensitive options
- added support for double-dash
- replaced options with options from vncviewer-4.1.1 (Ubuntu-8.10)
-rw-r--r-- | to_review/vncviewer | 57 |
1 files changed, 43 insertions, 14 deletions
diff --git a/to_review/vncviewer b/to_review/vncviewer index 02c91051..24d90124 100644 --- a/to_review/vncviewer +++ b/to_review/vncviewer @@ -1,8 +1,11 @@ # -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- # ex: ts=8 sw=8 noet filetype=sh # -# bash completion for vncviewer +# bash completion for vncviewer (4.1.1) + +# NOTE: - VNC Viewer options are case-insensivite. Preferred case is taken from -help. +# - Both single dash (-) and double dash (--) are allowed as option prefix have vncviewer && _vncviewer() { @@ -12,29 +15,55 @@ _vncviewer() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} - case $prev in - -passwd) + # Convert double dash to single dash + case ${prev/#--/-} in + # -passwd, -PasswordFile + -[pP][aA][sS][sS][wW][dD]|-[pP][aA][sS][sS][wW][oO][rR][dD][fF][iI][lL][eE]) _filedir return 0 ;; - -encodings) - COMPREPLY=( $( compgen -W 'copyrect tight hextile zlib \ - corre rre raw' -- $cur ) ) + # -PreferredEncoding + -[pP][rR][eE][fF][eE][rR][rR][eE][dD][eE][nN][cC][oO][dD][iI][nN][gG]) + COMPREPLY=( $( compgen -W 'zrle hextile raw' -- $cur ) ) return 0 ;; - -via) + # -via + -[vV][iI][aA]) _known_hosts return 0 ;; esac - - if [[ "$cur" == -* ]]; then - COMPREPLY=( $( compgen -W '-help -listen -via -shared -noshared\ - -viewonly -fullscreen -noraiseonbeep -passwd -encodings\ - -bgr233 -owncmap -truecolour -truecolor -depth \ - -compresslevel -quality -nojpeg -nocursorshape \ - -x11cursor' -- $cur ) ) + if [[ "$cur" == -* || "$cur" == --* ]]; then + # Default to vncviewer camelcase options, see `vncviewer -help' + local dash options=( \ + AcceptClipboard AutoSelect DebugDelay display \ + DotWhenNoCursor FullColor FullColour FullScreen \ + geometry help listen Log \ + LowColourLevel MenuKey name Parent \ + passwd PasswordFile PointerEventInterval PreferredEncoding \ + SendClipboard SendPrimary Shared UseLocalCursor \ + via ViewOnly WMDecorationHeight WMDecorationWidth \ + ZlibLevel \ + ) + [[ "$cur" == --* ]] && dash=-- || dash=- + # Is a `nocasematch' variable available (bash > v3.1)? + if shopt nocasematch 2> /dev/null | grep -q ^nocasematch; then + # Variable `nocasematch' is available + # Use vncviewer camelcase options + local option oldNoCaseMatch=$(shopt -p nocasematch) + shopt -s nocasematch + COMPREPLY=( $( for option in "${options[@]}"; do + [[ $dash$option == "$cur"* ]] && echo $dash$option + done ) ) + eval "$oldNoCaseMatch" 2> /dev/null + else + # Variable 'nocasematch' isn't available; + # Convert completions to lowercase + COMPREPLY=( $( compgen -W "$( + echo ${options[@]/#/$dash} | tr [:upper:] [:lower:] + )" -- "$(echo "$cur" | tr [:upper:] [:lower:])" ) ) + fi else _known_hosts fi |