The following commit has been merged in the master branch:
commit 4a2e36c2f8a499d6df8491e7b2b8db9502bd66c7
Author: Guillaume Rousse <[email protected]>
Date:   Wed May 27 18:53:50 2009 +0200

    split java completion

diff --git a/Makefile.am b/Makefile.am
index c8ae842..bbaf987 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,6 +36,7 @@ bashcomp_DATA = contrib/ant \
                contrib/heimdal \
                contrib/imagemagick \
                contrib/isql \
+               contrib/java \
                contrib/larch \
                contrib/ldapvi \
                contrib/lftp \
diff --git a/bash_completion b/bash_completion
index 6b10a5e..c7919b5 100644
--- a/bash_completion
+++ b/bash_completion
@@ -3296,265 +3296,6 @@ _dselect()
 } &&
 complete -F _dselect $filenames dselect
 
-# Java completion
-#
-
-# available path elements completion
-have java && {
-_java_path()
-{
-       cur=${cur##*:}
-       _filedir '@(jar|zip)'
-}
-
-# exact classpath determination
-_java_find_classpath()
-{
-       local i
-
-       # search first in current options
-       for (( i=1; i < COMP_CWORD; i++ )); do
-               if [[ "${COMP_WORDS[i]}" == -@(cp|classpath) ]]; then
-                       classpath=${COMP_WORDS[i+1]}
-                       break
-               fi
-       done
-
-       # default to environment
-       [ -z "$classpath" ] && classpath=$CLASSPATH
-
-       # default to current directory
-       [ -z "$classpath" ] && classpath=.
-}
-
-# exact sourcepath determination
-_java_find_sourcepath()
-{
-       local i
-
-       # search first in current options
-       for (( i=1; i < COMP_CWORD; i++ )); do
-               if [[ "${COMP_WORDS[i]}" == -sourcepath ]]; then
-                       sourcepath=${COMP_WORDS[i+1]}
-                       break
-               fi
-       done
-
-       # default to classpath
-       if [ -z "$sourcepath" ]; then
-               _java_find_classpath
-               sourcepath=$classpath
-       fi
-}
-
-# available classes completion
-_java_classes()
-{
-       local classpath i
-
-       # find which classpath to use
-       _java_find_classpath
-
-       # convert package syntax to path syntax
-       cur=${cur//.//}
-       # parse each classpath element for classes
-       for i in ${classpath//:/ }; do
-               if [ -r $i ] && [[ "$i" == *.@(jar|zip) ]]; then
-                       if type zipinfo &>/dev/null; then
-                               COMPREPLY=( "${comprep...@]}" $( zipinfo -1 \
-                                       "$i" "$cur*" 2>/dev/null | \
-                                       grep '^[^$]*\.class$' ) )
-                       else
-                               COMPREPLY=( "${comprep...@]}" $( jar tf "$i" \
-                                       "$cur" | grep '^[^$]*\.class$' ) )
-                       fi
-
-               elif [ -d $i ]; then
-                       i=${i%/}
-                       
-                       # See Debian bug #496828
-                       COMPREPLY=( "${comprep...@]}" $( find "$i" -type f \
-                       -maxdepth 1 -path "$i/$cur*.class" 2>/dev/null | \
-                       grep -v "\\$" | sed -e "s|^$i/||" ) )
-                       
-                       # FIXME: if we have foo.class and foo/, the completion
-                       # returns "foo/"... how to give precedence to files
-                       # over directories?
-               fi
-       done
-
-       # remove class extension
-       COMPREPLY=( ${comprep...@]%.class} )
-       # convert path syntax to package syntax
-       COMPREPLY=( ${comprep...@]//\//.} )
-}
-
-# available packages completion
-_java_packages()
-{
-       local sourcepath i
-
-       # find which sourcepath to use
-       _java_find_sourcepath
-
-       # convert package syntax to path syntax
-       cur=${cur//.//}
-       # parse each sourcepath element for packages
-       for i in ${sourcepath//:/ }; do
-               if [ -d $i ]; then
-                       COMPREPLY=( "${comprep...@]}" $( command ls -F -d \
-                               $i/$cur* 2>/dev/null | sed -e 's|^'$i'/||' ) )
-               fi
-       done
-       # keep only packages
-       COMPREPLY=( $( echo "${comprep...@]}" | tr " " "\n" | grep "/$" ) )
-       # remove packages extension
-       COMPREPLY=( ${comprep...@]%/} )
-       # convert path syntax to package syntax
-       cur=${comprep...@]//\//.}
-}
-
-# java completion
-#
-_java()
-{
-       local cur prev i
-
-       COMPREPLY=()
-       cur=`_get_cword`
-       prev=${COMP_WORDS[COMP_CWORD-1]}
-
-       for ((i=1; i < $COMP_CWORD; i++)); do
-               case ${COMP_WORDS[$i]} in
-                   -cp|-classpath)
-                       ((i++)) # skip the classpath string.
-                       ;;
-                   -*)
-                       # this is an option, not a class/jarfile name.
-                       ;;
-                   *)
-                       # once we've seen a class, just do filename completion
-                       _filedir
-                       return 0
-                       ;;
-               esac
-       done
-
-       case $prev in
-               -@(cp|classpath))
-                       _java_path
-                       return 0
-                       ;;
-       esac
-
-       if [[ "$cur" == -* ]]; then
-               # relevant options completion
-               COMPREPLY=( $( compgen -W '-client -hotspot -server -classic \
-                               -cp -classpath -D -verbose -verbose:class \
-                               -verbose:gc -version:jni -version \
-                               -showversion -? -help -X -jar \
-                               -ea -enableassertions -da -disableassertions \
-                               -esa -enablesystemassertions \
-                               -dsa -disablesystemassertions ' -- $cur ) )
-       else
-               if [[ "$prev" == -jar ]]; then
-                       # jar file completion
-                       _filedir jar
-               else
-                       # classes completion
-                       _java_classes
-               fi
-       fi
-}
-complete -F _java $filenames java
-}
-
-# javadoc completion
-#
-have javadoc &&
-_javadoc()
-{
-       COMPREPLY=()
-       local cur prev
-
-       cur=`_get_cword`
-       prev=${COMP_WORDS[COMP_CWORD-1]}
-
-       case $prev in
-               -@(overview|helpfile|stylesheetfile))
-                       _filedir
-                       return 0
-                       ;;
-               -d)
-                       _filedir -d
-                       return 0
-                       ;;
-               -@(classpath|bootclasspath|docletpath|sourcepath|extdirs))
-                       _java_path
-                       return 0
-                       ;;
-       esac
-
-       if [[ "$cur" == -* ]]; then
-               # relevant options completion
-               COMPREPLY=( $( compgen -W '-overview -public -protected \
-                               -package -private -help -doclet -docletpath \
-                               -sourcepath -classpath -exclude -subpackages \
-                               -breakiterator -bootclasspath -source -extdirs \
-                               -verbose -locale -encoding -J -d -use -version \
-                               -author -docfilessubdirs -splitindex \
-                               -windowtitle -doctitle -header -footer -bottom \
-                               -link -linkoffline -excludedocfilessubdir \
-                               -group -nocomment -nodeprecated -noqualifier \
-                               -nosince -nodeprecatedlist -notree -noindex \
-                               -nohelp -nonavbar -quiet -serialwarn -tag \
-                               -taglet -tagletpath -charset -helpfile \
-                               -linksource -stylesheetfile -docencoding' -- \
-                               $cur ) )
-       else
-               # source files completion
-               _filedir java
-               # packages completion
-               _java_packages
-       fi
-} &&
-complete -F _javadoc $filenames javadoc
-
-# javac completion
-#
-have javac &&
-_javac()
-{
-       COMPREPLY=()
-       local cur prev
-
-       cur=`_get_cword`
-       prev=${COMP_WORDS[COMP_CWORD-1]}
-
-       case $prev in
-               -d)
-                       _filedir -d
-                       return 0
-                       ;;
-               -@(classpath|bootclasspath|sourcepath|extdirs))
-                       _java_path
-                       return 0
-                       ;;
-       esac
-
-       if [[ "$cur" == -* ]]; then
-               # relevant options completion
-               COMPREPLY=( $( compgen -W '-g -g:none -g:lines -g:vars\
-               -g:source -O -nowarn -verbose -deprecation -classpath\
-               -sourcepath -bootclasspath -extdirs -d -encoding -source\
-               -target -help' -- $cur ) )
-       else
-               # source files completion
-               _filedir java
-       fi
-} &&
-complete -F _javac $filenames javac
-
 # PINE address-book completion
 #
 have pine &&
diff --git a/contrib/java b/contrib/java
new file mode 100644
index 0000000..1e70690
--- /dev/null
+++ b/contrib/java
@@ -0,0 +1,256 @@
+# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
+# ex: ts=8 sw=8 noet filetype=sh
+#
+# bash completion for java, javac and javadoc
+
+# available path elements completion
+have java && {
+_java_path()
+{
+       cur=${cur##*:}
+       _filedir '@(jar|zip)'
+}
+
+# exact classpath determination
+_java_find_classpath()
+{
+       local i
+
+       # search first in current options
+       for (( i=1; i < COMP_CWORD; i++ )); do
+               if [[ "${COMP_WORDS[i]}" == -@(cp|classpath) ]]; then
+                       classpath=${COMP_WORDS[i+1]}
+                       break
+               fi
+       done
+
+       # default to environment
+       [ -z "$classpath" ] && classpath=$CLASSPATH
+
+       # default to current directory
+       [ -z "$classpath" ] && classpath=.
+}
+
+# exact sourcepath determination
+_java_find_sourcepath()
+{
+       local i
+
+       # search first in current options
+       for (( i=1; i < COMP_CWORD; i++ )); do
+               if [[ "${COMP_WORDS[i]}" == -sourcepath ]]; then
+                       sourcepath=${COMP_WORDS[i+1]}
+                       break
+               fi
+       done
+
+       # default to classpath
+       if [ -z "$sourcepath" ]; then
+               _java_find_classpath
+               sourcepath=$classpath
+       fi
+}
+
+# available classes completion
+_java_classes()
+{
+       local classpath i
+
+       # find which classpath to use
+       _java_find_classpath
+
+       # convert package syntax to path syntax
+       cur=${cur//.//}
+       # parse each classpath element for classes
+       for i in ${classpath//:/ }; do
+               if [ -r $i ] && [[ "$i" == *.@(jar|zip) ]]; then
+                       if type zipinfo &>/dev/null; then
+                               COMPREPLY=( "${comprep...@]}" $( zipinfo -1 \
+                                       "$i" "$cur*" 2>/dev/null | \
+                                       grep '^[^$]*\.class$' ) )
+                       else
+                               COMPREPLY=( "${comprep...@]}" $( jar tf "$i" \
+                                       "$cur" | grep '^[^$]*\.class$' ) )
+                       fi
+
+               elif [ -d $i ]; then
+                       i=${i%/}
+                       
+                       # See Debian bug #496828
+                       COMPREPLY=( "${comprep...@]}" $( find "$i" -type f \
+                       -maxdepth 1 -path "$i/$cur*.class" 2>/dev/null | \
+                       grep -v "\\$" | sed -e "s|^$i/||" ) )
+                       
+                       # FIXME: if we have foo.class and foo/, the completion
+                       # returns "foo/"... how to give precedence to files
+                       # over directories?
+               fi
+       done
+
+       # remove class extension
+       COMPREPLY=( ${comprep...@]%.class} )
+       # convert path syntax to package syntax
+       COMPREPLY=( ${comprep...@]//\//.} )
+}
+
+# available packages completion
+_java_packages()
+{
+       local sourcepath i
+
+       # find which sourcepath to use
+       _java_find_sourcepath
+
+       # convert package syntax to path syntax
+       cur=${cur//.//}
+       # parse each sourcepath element for packages
+       for i in ${sourcepath//:/ }; do
+               if [ -d $i ]; then
+                       COMPREPLY=( "${comprep...@]}" $( command ls -F -d \
+                               $i/$cur* 2>/dev/null | sed -e 's|^'$i'/||' ) )
+               fi
+       done
+       # keep only packages
+       COMPREPLY=( $( echo "${comprep...@]}" | tr " " "\n" | grep "/$" ) )
+       # remove packages extension
+       COMPREPLY=( ${comprep...@]%/} )
+       # convert path syntax to package syntax
+       cur=${comprep...@]//\//.}
+}
+
+# java completion
+#
+_java()
+{
+       local cur prev i
+
+       COMPREPLY=()
+       cur=`_get_cword`
+       prev=${COMP_WORDS[COMP_CWORD-1]}
+
+       for ((i=1; i < $COMP_CWORD; i++)); do
+               case ${COMP_WORDS[$i]} in
+                   -cp|-classpath)
+                       ((i++)) # skip the classpath string.
+                       ;;
+                   -*)
+                       # this is an option, not a class/jarfile name.
+                       ;;
+                   *)
+                       # once we've seen a class, just do filename completion
+                       _filedir
+                       return 0
+                       ;;
+               esac
+       done
+
+       case $prev in
+               -@(cp|classpath))
+                       _java_path
+                       return 0
+                       ;;
+       esac
+
+       if [[ "$cur" == -* ]]; then
+               # relevant options completion
+               COMPREPLY=( $( compgen -W '-client -hotspot -server -classic \
+                               -cp -classpath -D -verbose -verbose:class \
+                               -verbose:gc -version:jni -version \
+                               -showversion -? -help -X -jar \
+                               -ea -enableassertions -da -disableassertions \
+                               -esa -enablesystemassertions \
+                               -dsa -disablesystemassertions ' -- $cur ) )
+       else
+               if [[ "$prev" == -jar ]]; then
+                       # jar file completion
+                       _filedir jar
+               else
+                       # classes completion
+                       _java_classes
+               fi
+       fi
+}
+complete -F _java $filenames java
+}
+
+have javadoc &&
+_javadoc()
+{
+       COMPREPLY=()
+       local cur prev
+
+       cur=`_get_cword`
+       prev=${COMP_WORDS[COMP_CWORD-1]}
+
+       case $prev in
+               -@(overview|helpfile|stylesheetfile))
+                       _filedir
+                       return 0
+                       ;;
+               -d)
+                       _filedir -d
+                       return 0
+                       ;;
+               -@(classpath|bootclasspath|docletpath|sourcepath|extdirs))
+                       _java_path
+                       return 0
+                       ;;
+       esac
+
+       if [[ "$cur" == -* ]]; then
+               # relevant options completion
+               COMPREPLY=( $( compgen -W '-overview -public -protected \
+                               -package -private -help -doclet -docletpath \
+                               -sourcepath -classpath -exclude -subpackages \
+                               -breakiterator -bootclasspath -source -extdirs \
+                               -verbose -locale -encoding -J -d -use -version \
+                               -author -docfilessubdirs -splitindex \
+                               -windowtitle -doctitle -header -footer -bottom \
+                               -link -linkoffline -excludedocfilessubdir \
+                               -group -nocomment -nodeprecated -noqualifier \
+                               -nosince -nodeprecatedlist -notree -noindex \
+                               -nohelp -nonavbar -quiet -serialwarn -tag \
+                               -taglet -tagletpath -charset -helpfile \
+                               -linksource -stylesheetfile -docencoding' -- \
+                               $cur ) )
+       else
+               # source files completion
+               _filedir java
+               # packages completion
+               _java_packages
+       fi
+} &&
+complete -F _javadoc $filenames javadoc
+
+have javac &&
+_javac()
+{
+       COMPREPLY=()
+       local cur prev
+
+       cur=`_get_cword`
+       prev=${COMP_WORDS[COMP_CWORD-1]}
+
+       case $prev in
+               -d)
+                       _filedir -d
+                       return 0
+                       ;;
+               -@(classpath|bootclasspath|sourcepath|extdirs))
+                       _java_path
+                       return 0
+                       ;;
+       esac
+
+       if [[ "$cur" == -* ]]; then
+               # relevant options completion
+               COMPREPLY=( $( compgen -W '-g -g:none -g:lines -g:vars\
+               -g:source -O -nowarn -verbose -deprecation -classpath\
+               -sourcepath -bootclasspath -extdirs -d -encoding -source\
+               -target -help' -- $cur ) )
+       else
+               # source files completion
+               _filedir java
+       fi
+} &&
+complete -F _javac $filenames javac

-- 
bash-completion

_______________________________________________
Bash-completion-commits mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/bash-completion-commits

Reply via email to