diff --git a/completions/Makefile.am b/completions/Makefile.am index 62060c5c..bdb8368c 100644 --- a/completions/Makefile.am +++ b/completions/Makefile.am @@ -188,6 +188,7 @@ bashcomp_DATA = abook \ wol \ wtf \ wvdial \ + xgamma \ xhost \ xm \ xmllint \ diff --git a/completions/xgamma b/completions/xgamma new file mode 100644 index 00000000..fba7cd55 --- /dev/null +++ b/completions/xgamma @@ -0,0 +1,65 @@ +# bash completion for xgamma(1) + +have xgamma || return + +_xgamma() +{ + local cur prev words cword + _init_completion -n : || return + + case "$prev" in + -screen) + local screens=$(xrandr --query 2>/dev/null | \ + sed -n '/^Screen /s|^Screen \{1,\}\(.*\):.*$|\1|p' 2>/dev/null) + COMPREPLY=( $(compgen -W "$screens" -- "$cur")) + return + ;; + -gamma|-rgamma|-ggamma|-bgamma) + # expect f.f + if [[ $cur && "$cur" != *.* ]]; then + COMPREPLY=( . ) + fi + COMPREPLY+=( $(compgen -W "{0..9}") ) + compopt -o nospace + return + ;; + -display) + # expect hostname:displaynumber.screennumber + if [[ "$cur" == :* && "$cur" != :*.* ]]; then + # FIXME: where to get local display numbers? + local display=${cur#:} + COMPREPLY=( $(compgen -W "${display:-0}.") ) + compopt -o nospace + elif [[ "$cur" == :*.* ]]; then + # local screen numbers + local t screens=$(xrandr --query 2>/dev/null | sed -n \ + -e '/^Screen /s|^Screen \{1,\}\(.*\):.*$|\1|p' 2>/dev/null) + t="${cur#:}" + COMPREPLY=( $(compgen -P "${t%.*}." -W "$screens" -- "${cur##*.}")) + elif [[ "$cur" != *:* ]]; then + # complete hostnames + _known_hosts_real -c "$cur" + if [[ ! $cur ]]; then + COMPREPLY+=( : ) + fi + compopt -o nospace + fi + # no dislpay completion for remote hosts + return + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '$( _parse_help "$1" -help )' -- "$cur" ) ) + [[ $COMPREPLY == *= ]] && compopt -o nospace + [[ $COMPREPLY ]] && return + fi +} && complete -F _xgamma xgamma + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/test/completion/xgamma.exp b/test/completion/xgamma.exp new file mode 100644 index 00000000..706e74f9 --- /dev/null +++ b/test/completion/xgamma.exp @@ -0,0 +1 @@ +assert_source_completions xgamma diff --git a/test/lib/completions/xgamma.exp b/test/lib/completions/xgamma.exp new file mode 100644 index 00000000..c4c2228e --- /dev/null +++ b/test/lib/completions/xgamma.exp @@ -0,0 +1,21 @@ +proc setup {} { + save_env +} + + +proc teardown {} { + assert_env_unmodified +} + + +setup + + +set test "-gam should complete \"-gamma\"" +assert_complete "-gamma" "xgamma -gam" $test + + +sync_after_int + + +teardown