Improved vncviewer completion

- Split vncviewer completion in _tightvncviewer() and _xvn4viewer()
    - Vncviewer completion automatically selects right completion at
      run-time.  Default is _tightvncviewer().
    - Added _realcommand() global function
master
Freddy Vulto 2009-03-16 21:57:12 +01:00
parent 3217cff1ef
commit 23ff82046f
2 changed files with 78 additions and 33 deletions

View File

@ -541,6 +541,25 @@ _usergroup()
fi
}
# Get real command.
# - arg: $1 Command
# - stdout: Filename of command in PATH with possible symbolic links resolved.
# Empty string if command not found.
# - return: True (0) if command found, False (> 0) if not.
_realcommand() {
type -P "$1" > /dev/null && {
if type -p realpath > /dev/null; then
realpath "$(type -P "$1")"
elif type -p readlink > /dev/null; then
readlink -f "$(type -P "$1")"
else
type -P "$1"
fi
}
}
# this function count the number of mandatory args
#
_count_args()
@ -9064,35 +9083,6 @@ _smartctl()
complete -F _smartctl smartctl
}
# vncviewer(1) completion
#
have vncviewer &&
_vncviewer()
{
local cur prev
local -a config
COMPREPLY=()
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
case "$prev" in
-via)
_known_hosts -a
;;
*)
# ssh into the the server, find and ping the broadcast address, then
# sort and show the results.
COMPREPLY=( $( ssh -o 'Batchmode yes' $prev \
"ping -bnc 4 255.255.255.255" 2>/dev/null | \
awk -F ' ' '{print $4}' | \
sort -n | uniq | egrep '[0-9]+\.[0-9]+\.' 2>/dev/null ) )
esac
return 0
} &&
complete -F _vncviewer vncviewer
# sysctl(8) completion
#
have sysctl &&

View File

@ -1,13 +1,68 @@
# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
# ex: ts=8 sw=8 noet filetype=sh
#
# bash completion for vncviewer (4.1.1)
# bash completion for vncviewer
_vncviewer_bootstrap() {
local fname
case "$(_realcommand vncviewer)" in
# If `vncviewer' not installed, default file-dir completion
'') _filedir `_get_cword` ;;
*xvnc4viewer) fname=_xvnc4viewer ;;
*tightvncviewer|*) fname=_tightvncviewer ;;
esac
if [ $fname ]; then
# Install real completion for subsequent completions
complete -F $fname vncviewer
$fname # Generate completions once for now
unset -f _vncviewer_bootstrap
fi
} &&
complete -F _vncviewer_bootstrap vncviewer
_tightvncviewer()
{
local cur prev
COMPREPLY=()
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
case $prev in
-passwd)
_filedir
return 0
;;
-encodings)
COMPREPLY=( $( compgen -W 'copyrect tight hextile zlib \
corre rre raw' -- $cur ) )
return 0
;;
-via)
_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 ) )
else
_known_hosts
fi
} &&
complete -F _tightvncviewer tightvncviewer
# 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()
_xvnc4viewer()
{
local cur prev
@ -68,4 +123,4 @@ _vncviewer()
_known_hosts
fi
} &&
complete -F _vncviewer vncviewer
complete -F _xvnc4viewer xvnc4viewer