summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreddy Vulto <fvulto@gmail.com>2009-02-15 21:56:01 +0100
committerFreddy Vulto <fvulto@gmail.com>2009-02-15 21:56:01 +0100
commit20278a41473544d43c51095ba2e118fc7b89c0d5 (patch)
tree0e9c05b3d1680dbceb6061efed491237bc518a02
parentd07e282122f3ec3edf207bc75d5aa783ff055c12 (diff)
downloadbash-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/vncviewer57
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