summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Birchinger <joker@gentoo.org>2003-12-13 17:46:15 +0000
committerChristian Birchinger <joker@gentoo.org>2003-12-13 17:46:15 +0000
commit0dc70380bc433e875fe3056410f4d4f3918b4eca (patch)
tree0923630ca8cc5c8f84114545e8a525c592b559e4 /app-shells
parentmark stable on amd64 (diff)
downloadgentoo-2-0dc70380bc433e875fe3056410f4d4f3918b4eca.tar.gz
gentoo-2-0dc70380bc433e875fe3056410f4d4f3918b4eca.tar.bz2
gentoo-2-0dc70380bc433e875fe3056410f4d4f3918b4eca.zip
Added rc and rc-status completion
Diffstat (limited to 'app-shells')
-rw-r--r--app-shells/bash-completion/ChangeLog8
-rw-r--r--app-shells/bash-completion/Manifest7
-rw-r--r--app-shells/bash-completion/bash-completion-20031125-r1.ebuild (renamed from app-shells/bash-completion/bash-completion-20031112.ebuild)6
-rw-r--r--app-shells/bash-completion/files/digest-bash-completion-200311121
-rw-r--r--app-shells/bash-completion/files/digest-bash-completion-20031125-r11
-rw-r--r--app-shells/bash-completion/files/gentoo.completion-20031125-r1612
6 files changed, 627 insertions, 8 deletions
diff --git a/app-shells/bash-completion/ChangeLog b/app-shells/bash-completion/ChangeLog
index e336eb07a14e..6a414d1ff0d3 100644
--- a/app-shells/bash-completion/ChangeLog
+++ b/app-shells/bash-completion/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for app-shells/bash-completion
# Copyright 2002-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-shells/bash-completion/ChangeLog,v 1.47 2003/12/13 17:33:00 joker Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-shells/bash-completion/ChangeLog,v 1.48 2003/12/13 17:46:01 joker Exp $
+
+*bash-completion-20031125-r1 (13 Dec 2003)
+
+ 13 Dec 2003; Christian Birchinger <joker@gentoo.org>
+ bash-completion-20031125-r1.ebuild, files/gentoo.completion-20031125-r1:
+ Added rc and rc-status completion
13 Dec 2003; Christian Birchinger <joker@gentoo.org>
bash-completion-20031125.ebuild:
diff --git a/app-shells/bash-completion/Manifest b/app-shells/bash-completion/Manifest
index 4203fe20b52d..b62f39c4bb78 100644
--- a/app-shells/bash-completion/Manifest
+++ b/app-shells/bash-completion/Manifest
@@ -1,8 +1,9 @@
-MD5 2898dece0e9ee2061f8f203773702bdf ChangeLog 6172
-MD5 1ba866bc966b9b77f9214fc133a11fb5 bash-completion-20031112.ebuild 1458
+MD5 f7c6464d26bc3d4b65a77d8d4ea56158 ChangeLog 6383
+MD5 7ad428257d9146f43c79585013af0a72 bash-completion-20031125-r1.ebuild 1481
MD5 f0b200452477f05371b05c637e08107c bash-completion-20031125.ebuild 1458
MD5 c85a85bd33aac22ae4872c85733e581f files/README.gentoo 491
MD5 9b22241df7258cb9677cf9a1497e07c5 files/bash-completion 625
MD5 3c7995eee919c34f968dcde5d7b05ae0 files/digest-bash-completion-20031125 76
-MD5 027671ae5e2c2687102df28add2005e4 files/digest-bash-completion-20031112 76
+MD5 3c7995eee919c34f968dcde5d7b05ae0 files/digest-bash-completion-20031125-r1 76
MD5 f96c9b92f176d02ecb313feb104f8af1 files/gentoo.completion 15731
+MD5 f84b4350433e3f579107d1da4a30332f files/gentoo.completion-20031125-r1 16312
diff --git a/app-shells/bash-completion/bash-completion-20031112.ebuild b/app-shells/bash-completion/bash-completion-20031125-r1.ebuild
index e158e33befe4..b9821f06283e 100644
--- a/app-shells/bash-completion/bash-completion-20031112.ebuild
+++ b/app-shells/bash-completion/bash-completion-20031125-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-shells/bash-completion/bash-completion-20031112.ebuild,v 1.4 2003/11/27 11:16:10 joker Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-shells/bash-completion/bash-completion-20031125-r1.ebuild,v 1.1 2003/12/13 17:46:01 joker Exp $
S=${WORKDIR}/${PN/-/_}
DESCRIPTION="Programmable Completion for bash (includes emerge and ebuild commands)."
@@ -9,7 +9,7 @@ SRC_URI="http://www.caliban.org/files/bash/${P}.tar.bz2"
SLOT="0"
LICENSE="GPL-2"
-KEYWORDS="x86 ppc sparc alpha mips hppa arm amd64"
+KEYWORDS="~x86 ~ppc ~sparc ~alpha ~mips ~hppa ~arm ~amd64"
DEPEND="app-arch/tar
app-arch/bzip2"
@@ -30,7 +30,7 @@ src_install() {
doins contrib/p4
doins contrib/ri
- newins ${FILESDIR}/gentoo.completion gentoo
+ newins ${FILESDIR}/gentoo.completion-${PVR/-r0/} gentoo
insinto /etc/profile.d
doins ${FILESDIR}/bash-completion
diff --git a/app-shells/bash-completion/files/digest-bash-completion-20031112 b/app-shells/bash-completion/files/digest-bash-completion-20031112
deleted file mode 100644
index 360355c0b928..000000000000
--- a/app-shells/bash-completion/files/digest-bash-completion-20031112
+++ /dev/null
@@ -1 +0,0 @@
-MD5 4381a3f5cd6efc2b71dfecd38564a14e bash-completion-20031112.tar.bz2 72134
diff --git a/app-shells/bash-completion/files/digest-bash-completion-20031125-r1 b/app-shells/bash-completion/files/digest-bash-completion-20031125-r1
new file mode 100644
index 000000000000..09228e9de058
--- /dev/null
+++ b/app-shells/bash-completion/files/digest-bash-completion-20031125-r1
@@ -0,0 +1 @@
+MD5 56a19bf89972f2d6e129933e7d76d626 bash-completion-20031125.tar.bz2 72975
diff --git a/app-shells/bash-completion/files/gentoo.completion-20031125-r1 b/app-shells/bash-completion/files/gentoo.completion-20031125-r1
new file mode 100644
index 000000000000..33683e6f7000
--- /dev/null
+++ b/app-shells/bash-completion/files/gentoo.completion-20031125-r1
@@ -0,0 +1,612 @@
+# -*- shell-script -*-
+#
+# Gentoo Linux command completion.
+#
+# Copyright 1999-2002 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+#
+# Author: Geert Bevin <gbevin@theleaf.be>
+# Author: Zach Forrest <zach@disinformation.ca>
+#
+
+#
+# rc & rc-status completion command
+#
+_rc()
+{
+ local cur
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ if [ ${#COMP_WORDS[*]} -le 2 ]; then
+ COMPREPLY=( $( compgen -W "$(for i in /etc/runlevels/*; do echo ${i##*/}; done)" -- $cur ) )
+
+ fi
+ return 0
+}
+complete -F _rc rc
+
+_rc-status()
+{
+ local cur opts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ if [ ${#COMP_WORDS[*]} -le 2 ]; then
+ opts="-a -all -l --list -u --unused"
+ COMPREPLY=( $( compgen -W "${opts} $(for i in /etc/runlevels/*; do echo ${i##*/}; done)" -- $cur ) )
+
+ fi
+ return 0
+}
+complete -F _rc-status rc-status
+
+#
+# distcc-config completion command
+#
+_distccconfig()
+{
+ local cur curword numwords opts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ if [ ${numwords} -gt 3 ]; then
+ return 0
+ fi
+ if [[ "${cur}" == -* ]] || [ ${curword} -eq 1 ]; then
+ if [ ${numwords} -le 2 ] && [ ${curword} -eq 1 ]; then
+ opts="--get-hosts \
+ --get-verbose \
+ --get-log \
+ --set-hosts \
+ --set-verbose \
+ --set-log \
+ --add-path \
+ --no-path"
+ else
+ opts=""
+ fi
+ else
+ opts=""
+ fi
+ COMPREPLY=($(compgen -W "${opts}" | grep ^$cur))
+ return 0
+}
+complete -F _distccconfig distcc-config
+
+#
+# simple completion for Gentoo style init
+#
+complete -W "start stop restart pause zap ineed needsme iuse usesme broken" \
+ $(for i in /etc/init.d/*; do echo ${i##*/}; done)
+
+#
+# emerge completion command
+#
+_emerge()
+{
+ local cur prev grepcmd sedcmd systemactions setsma setbig portagedir origdir
+ local mode words opts curword numwords pkgdbdir
+
+ origdir="${PWD}"
+ portagedir=/usr/portage
+ pkgdbdir=/var/db/pkg
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ words="${COMP_WORDS[*]}"
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ mode='ALL'
+
+ # Determine which mode we're running in.
+
+ if [ ${curword} -eq 1 ] && [ ${numwords} -eq 2 ]; then
+ # This is set when we nothing but the command name has been given.
+ mode='ALL'
+ elif [[ " ${words} " == *" --unmerge "* ]]; then
+ mode='UNMERGE'
+ elif [[ " ${words} " == *" --safe "* ]]; then
+ mode='SAFE'
+ elif [[ " ${words} " == *" --search "* ]]; then
+ mode='SEARCH'
+ elif [[ " ${words} " == *" --world "* ]]; then
+ mode='WORLD'
+ elif [[ " ${words} " == *" --help "* ]]; then
+ mode='HELP'
+ elif [[ " ${words} " == *" --clean "* ]]; then
+ mode='CLEAN'
+ elif [[ " ${words} " == *" --pretend "* ]]; then
+ mode='PRETEND'
+ else
+ # All except '--clean'
+ mode='NOCLEAN'
+ fi
+
+ if [[ "${cur}" == -* ]]; then
+
+ # Process Options
+
+ case "${mode}" in
+ "ALL")
+ opts='--clean --help --verbose --debug --fetchonly \
+ --onlydeps --noreplace --usepkg --buildpkg \
+ --autoclean --pretend --unmerge --safe \
+ --search --world'
+ ;;
+
+ "UNMERGE")
+ opts='--clean --verbose --debug --pretend \
+ --unmerge --safe'
+ ;;
+
+ "SAFE")
+ opts='--unmerge --verbose --debug'
+ ;;
+
+ "SEARCH")
+ opts='--verbose --debug'
+ ;;
+
+ "WORLD")
+ opts='--verbose --debug --pretend --world'
+ ;;
+
+ "HELP")
+ opts=''
+ ;;
+
+ "CLEAN")
+ opts='--verbose --debug --clean'
+ ;;
+
+ "PRETEND")
+ opts='--verbose --debug --fetchonly --onlydeps \
+ --noreplace --usepkg --buildpkg \
+ --autoclean --pretend --unmerge --safe \
+ --world'
+ ;;
+
+ "NOCLEAN")
+ opts='--help --verbose --debug --fetchonly \
+ --onlydeps --noreplace --usepkg --buildpkg \
+ --autoclean --pretend --unmerge --safe \
+ --search --world'
+ ;;
+ *)
+ # Same as ALL
+ opts='--clean --help --verbose --debug --fetchonly \
+ --onlydeps --noreplace --usepkg --buildpkg \
+ --autoclean --pretend --unmerge --safe \
+ --search --world'
+ ;;
+
+ esac
+
+ # Generate the reply.
+ COMPREPLY=($(compgen -W "${opts}" | grep ^$cur))
+
+ elif [ "${mode}" == "CLEAN" ]; then
+ # "rsync" is the only option that can follow "--clean"
+ COMPREPLY=($(compgen -W 'rsync'))
+
+ elif [ "${mode}" == "WORLD" ]; then
+ # "update" is the only option that can follow "--world"
+ #COMPREPLY=($(compgen -W 'update'))
+ COMPREPLY=($(compgen -W 'update' | grep ^${cur}))
+
+ elif [ "${mode}" == "HELP" ]; then
+ if [[ ! " ${words} " == *" "@(system|rsync)" "* ]]; then
+ COMPREPLY=($(compgen -W 'rsync system' | grep ^${cur}))
+ else
+ COMPREPLY=''
+ fi
+
+ elif [ "${mode}" == "SEARCH" ]; then
+ # We don't need to interfere here as the search string is a
+ # regular expression. (But wouldn't intelligent, dynamic,
+ # commandline completion of regular expressions be great!)
+ COMPREPLY=''
+
+ elif [ "${mode}" == "UNMERGE" ]; then
+ # Ignore >, >=, <, <=, and = for the purpose of completion.
+ sedcmd="sed -e s:=:: -e s:>:: -e s:<::"
+ cur=$(echo "${cur}" | ${sedcmd})
+
+ # If the current completion (minus conditional characters)
+ # starts with one of the following characters, then complete
+ # on filenames (i.e. an ebuild file) rather than referencing
+ # the package database.
+ if [[ "${cur} " == @('/'|'.'|'~'|'$')* ]]; then
+ # Setting this to nothing with tell bash to use default
+ # completion (i.e. pathname completion).
+ COMPREPLY=''
+ else
+ cd "${pkgdbdir}"
+ grepcmd="grep -E ^$cur.*"
+
+ if [ "${cur}" ]; then
+ if [ $(echo "${cur}" | grep '/') ]; then
+ setbig=$(compgen -G "${cur}*")
+ COMPREPLY=($(echo "${setbig}" | ${grepcmd}))
+ else
+ setsma=$(compgen -S '/' -G "${cur}*")
+ if [ $(echo "${setsma}" | ${grepcmd} | grep '/' | wc -l) = 1 ]; then
+ setbig=$(compgen -G "*/*")
+ COMPREPLY=($(echo "${setbig}" | ${grepcmd}))
+ else
+ COMPREPLY=($(echo "${setsma}" | ${grepcmd}))
+ fi
+ fi
+ else
+ setsma=$(compgen -S '/' -G "${cur}*")
+ COMPREPLY=($(echo "${setsma}"))
+ fi
+
+ cd "${origdir}"
+ fi
+
+ elif [ "${mode}" == "SAFE" ]; then
+ COMPREPLY=($(compgen -W '--unmerge' | grep ^${cur}))
+
+ elif [[ " ${words} " == *" "@(update|system|rsync)" "* ]]; then
+ # syncing the portage tree is a lonely job
+ # updating should be done by itself (also lonely)
+ COMPREPLY=''
+
+ elif [[ " ${words} " == *" --usepkg "* ]] && [[ "${cur} " == @('/'|'.'|'~'|'$')* ]]; then
+ # In order to complete on a package file, the name must be
+ # an absolute or realative pathname (even if it is in the
+ # current directory). This allows completion on both package
+ # names in /usr/portage and on arbitrary *.tbz2 packages.
+ #
+ # I'm planning to come up with a more elegant solution, but
+ # that will have to wait for another update. (The only thing
+ # that is really annoying right now is when specifying a
+ # *.tbz2 file in or below the current directory, you have
+ # to prefix the path with "./".)
+ COMPREPLY=''
+
+ else
+ cd "${portagedir}"
+ grepcmd="grep -E ^${cur}.*"
+ sedcmd="sed -e /^[^-]*$/d"
+
+ if [ ${COMP_CWORD} -eq 1 ]; then
+ # If emerge hasn't been given any args yet, include "rsync"
+ # among the system actions. The case where the "--clean" flag
+ # has been specified is handled above.
+ systemactions=$'\n'"system"$'\n'"update"$'\n'"rsync"
+ else
+ # Only allow these actions if no packages have been specified.
+ if [[ ! " ${words} " == *" "*[/]*" "* ]]; then
+ systemactions=$'\n'"system"$'\n'"update"
+ else
+ systemactions=''
+ fi
+ fi
+
+ if [ "${cur}" ]; then
+ if [ $(echo "${cur}" | grep '/') ]; then
+ setbig=$(compgen -G "${cur}*" | ${sedcmd})"${systemactions}"
+ COMPREPLY=($(echo "${setbig}" | $grepcmd))
+ else
+ setsma=$(compgen -S '/' -G "${cur}*" | ${sedcmd})"${systemactions}"
+ if [ $(echo "${setsma}" | ${grepcmd} | grep '/' | wc -l) = 1 ]; then
+ setbig=$(compgen -G "*/*" | ${sedcmd})"${systemactions}"
+ COMPREPLY=($(echo "${setbig}" | ${grepcmd}))
+ else
+ COMPREPLY=($(echo "${setsma}" | ${grepcmd}))
+ fi
+ fi
+ else
+ setsma=$(compgen -S '/' -G "${cur}*" | ${sedcmd})"${systemactions}"
+ COMPREPLY=($(echo "${setsma}"))
+ fi
+
+ cd "${origdir}"
+ fi
+
+ # (Adapted from bash_completion by Ian Macdonald <ian@caliban.org>)
+ # This removes any options from the list of completions that have
+ # already been specified on the command line.
+ COMPREPLY=($(echo "${COMP_WORDS[@]}" | \
+ (while read -d ' ' i; do
+ [ "${i}" == "" ] && continue
+ # flatten array with spaces on either side,
+ # otherwise we cannot grep on word boundaries of
+ # first and last word
+ COMPREPLY=" ${COMPREPLY[@]} "
+ # remove word from list of completions
+ COMPREPLY=(${COMPREPLY/ ${i%% *} / })
+ done
+ echo ${COMPREPLY[@]})))
+
+ return 0
+}
+complete -o default -F _emerge emerge
+
+#
+# ebuild completion command
+#
+_ebuild()
+{
+ local cur prev
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ if [ $COMP_CWORD -eq 1 ]; then
+ #COMPREPLY=( $( compgen -o filenames -X '!*.ebuild' $cur ) )
+ COMPREPLY=($(compgen -o filenames))
+ elif [ $COMP_CWORD -eq 2 ]; then
+ COMPREPLY=( $( compgen -W 'check \
+ clean compile config \
+ depend digest \
+ fetch \
+ help \
+ install \
+ merge \
+ package postinst postrm preinst prerm \
+ qmerge \
+ rcheck remerge rpm \
+ setup \
+ touch \
+ unmerge unpack' $cur ) )
+ fi
+ return 0
+}
+complete -o default -F _ebuild ebuild
+
+#
+# rc-update completion command
+#
+_rcupdate()
+{
+ local cur prev initdir runlvdir origdir
+ origdir=${PWD}
+ initdir=/etc/init.d
+ runlvdir=/etc/runlevels
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'add del' ${cur} ) )
+ elif [ $COMP_CWORD -eq 2 ]; then
+ cd ${initdir}
+ COMPREPLY=( $( compgen -G "${cur}*" ) )
+ cd ${origdir}
+ elif [ $COMP_CWORD -eq 3 ]; then
+ cd ${runlvdir}
+ COMPREPLY=( $( compgen -G "${cur}*" ) )
+ cd ${origdir}
+ fi
+ return 0
+}
+complete -F _rcupdate rc-update
+
+#
+# gcc-config completion command
+#
+_gccconfig()
+{
+ local cur curword numwords opts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ if [ ${numwords} -gt 3 ]; then
+ return 0
+ fi
+ if [[ "${cur}" == -* ]] || [ ${curword} -eq 1 ]; then
+ if [ ${numwords} -le 2 ] && [ ${curword} -eq 1 ]; then
+ opts="--use-old \
+ --use-portage-chost \
+ --get-current-profile \
+ --list-profiles \
+ --print-environ \
+ --get-bin-path \
+ --get-lib-path \
+ --get-stdcxx-incdir"
+ else
+ opts=""
+ fi
+ elif [ ${numwords} -le 3 ] && [ ${curword} -eq 2 ]; then
+ case "${COMP_WORDS[1]}" in
+ "--print-environ"|"--get-bin-path"|"--get-lib-path"|"--get-stdcxx-incdir")
+ opts=$(gcc-config --list-profiles)
+ ;;
+ *)
+ opts=""
+ ;;
+ esac
+ else
+ opts=""
+ fi
+ COMPREPLY=($(compgen -W "${opts}" | grep ^$cur))
+ return 0
+}
+complete -F _gccconfig gcc-config
+
+_javaconfig()
+{
+ local cur curword numwords opts args arg spec flag sedcmd grepcmd
+ local multiplepkgs pkgs execopts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ numwords=${#COMP_WORDS[*]}
+ curword=${COMP_CWORD}
+ opts=""
+ args=""
+ pkgs=""
+ sedcmd="sed -r -e s/\[([^]]+)\].*/\1/"
+ vmsedcmd="sed -r -e s/\[([^]]+)\]/\1/"
+ grepcmd="egrep -o (--set-(system|user)-(classpath|vm)=)"
+ multiplepkgs=""
+ execopts="HtmlConverter JavaPluginControlPanel \
+ appletviewer awt_robot \
+ extcheck \
+ idlj \
+ j2sdk-config jar jarsigner \
+ java java-rmi.cgijava_vm javac javadoc javah javap jdb \
+ keytool kinit klist ktab \
+ native2ascii \
+ oldjava oldjavac oldjdb orbd \
+ policytool \
+ realpath rmic rmid rmiregistry \
+ serialver servertool \
+ tnameserv"
+ if [[ "${cur}" == -* ]] || [ ${curword} -eq 1 ]; then
+ case "${cur}" in
+ "--java")
+ opts="--java --javac --java-version"
+ ;;
+ --j@(a@(r|va@(c|-version))|@(dk|re)-home))
+ opts=""
+ ;;
+ --list-available-@(packages|vms))
+ opts=""
+ ;;
+ --@(exec|set-@(user|system)-@(classpath|vm)))
+ opts="${cur}="
+ ;;
+ --set-@(user|system)-@(classpath|vm)=)
+ if [[ "${cur}" == "--set-system-vm=" ]] || [[ "${cur}" == "--set-user-vm=" ]]; then
+ flag="--list-available-vms"
+ args=$(java-config "${flag}" | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
+ else
+ flag="--list-available-packages"
+ args=$(java-config "${flag}" | ${sedcmd})
+ fi
+ #echo "$(java-config ${flag})" >> output
+ #args=$(java-config "${flag}" | ${sedcmd})
+ for arg in ${args}
+ do
+ [ "${opts}" ] && opts="${opts} ${arg}" || opts="${arg}"
+ done
+ COMPREPLY=($(compgen -o nospace -W "${opts}"))
+ return 0
+ ;;
+ "--exec=")
+ COMPREPLY=($(compgen -o nospace -W "${execopts}"))
+ return 0
+ ;;
+ *)
+ if [[ "${cur}" == "--set-system-vm="* ]] || [[ "${cur}" == "--set-user-vm="* ]]; then
+ args=$(java-config --list-available-vms | cut --delimiter=' ' --fields=2 | ${vmsedcmd})
+ # spec=$(echo "${cur}" | egrep -o "(--set-(system|user)-(classpath|vm)=)")
+ # spec=$(echo "${cur}" | ${grepcmd})
+ if [[ "${cur}" == "--set-system-vm="* ]]; then
+ spec=${cur##--set-system-vm=}
+ else
+ spec=${cur##--set-user-vm=}
+ fi
+ for arg in ${args}
+ do
+ if [[ "${arg:0:${#spec}}" == "${spec}" ]]; then
+ [ "${opts}" ] && opts="${opts} ${arg}" || opts="${arg}"
+ fi
+ done
+ [[ "${opts}" == "${spec}" ]] && opts=""
+ COMPREPLY=($(compgen -W "${opts}"))
+ return 0
+ elif [[ "${cur}" == "--set-system-classpath="* ]] || [[ "${cur}" == "--set-user-classpath="* ]]; then
+ args=$(java-config --list-available-packages | ${sedcmd})
+ [ $(echo "${cur}" | grep -c ",") -gt 0 ] && multiplepkgs="true"
+ # spec=$(echo "${cur}" | ${grepcmd})
+ if [[ "${cur}" == "--set-system-classpath="* ]]; then
+ spec="${cur##--set-system-classpath=}"
+ else
+ spec="${cur##--set-user-classpath=}"
+ fi
+ if [[ "${multiplepkgs}" ]]; then
+ pkgs="${spec%,*}"
+ spec="${spec##*,}"
+ fi
+ if [[ "${multiplepkgs}" ]]; then
+ for arg in ${args}
+ do
+ if [[ "${spec}" ]]; then
+ if [[ "${arg:0:${#spec}}" == "${spec}" ]] \
+ && [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]; then
+ [ "${opts}" ] && opts="${opts} ${pkgs},${arg}" || opts="${pkgs},${arg}"
+ fi
+ else
+ if [[ ! $(echo "${cur}" | egrep -o "(=|,)${arg},") ]]; then
+ [ "${opts}" ] && opts="${opts} ${pkgs},${arg}" || opts="${pkgs},${arg}"
+ fi
+ fi
+ done
+ [[ "${opts}" == "${pkgs},${spec}" ]] && opts=""
+ else
+ for arg in ${args}
+ do
+ if [[ "${spec}" ]] && [[ "${arg:0:${#spec}}" == "${spec}" ]]; then
+ [ "${opts}" ] && opts="${opts} ${arg}" || opts="${arg}"
+ fi
+ done
+ [[ "${opts}" == "${spec}" ]] && opts=""
+ fi
+ COMPREPLY=($(compgen -W "${opts}"))
+ return 0
+ elif [[ "${cur}" == "--exec="* ]]; then
+ spec=${cur##--exec=}
+ for arg in ${execopts}
+ do
+ if [[ "${arg:0:${#spec}}" == "${spec}" ]]; then
+ [ "${opts}" ] && opts="${opts} ${arg}" || opts="${arg}"
+ fi
+ done
+ [[ "${opts}" == "${spec}" ]] && opts=""
+ COMPREPLY=($(compgen -W "${opts}"))
+ return 0
+ else
+ opts="--javac \
+ --java \
+ --jar \
+ --jdk-home \
+ --jre-home \
+ --java-version \
+ --classpath \
+ --full-classpath \
+ --exec \
+ --list-available-packages \
+ --list-available-vms \
+ --set-system-vm \
+ --set-user-vm \
+ --set-system-classpath \
+ --set-user-classpath \
+ --clean-system-classpath"
+ fi
+ ;;
+ esac
+ else
+ opts=""
+ fi
+ COMPREPLY=($(compgen -o nospace -W "${opts}" | grep ^${cur}))
+ return 0
+}
+complete -o nospace -F _javaconfig java-config
+
+_openglupdate()
+{
+ local cur opts
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ numwords=${#COMP_WORDS[*]}
+ if [ ${numwords} -gt 2 ]; then
+ return 0
+ fi
+ COMPREPLY=($(compgen -W 'nvidia xfree' $cur))
+ COMPREPLY=($(echo " ${COMP_WORDS[@]}" | \
+ (while read -d ' ' i; do
+ [ "$i" == "" ] && continue
+ # flatten array with spaces on either side,
+ # otherwise we cannot grep on word
+ # boundaries of first and last word
+ COMPREPLY=" ${COMPREPLY[@]} "
+ # remove word from list of completions
+ COMPREPLY=( ${COMPREPLY/ $i / })
+ done
+ echo ${COMPREPLY[@]})))
+ return 0
+}
+complete -F _openglupdate opengl-update