#autoload # Should probably add some sort of cache. # Should we call _multi_parts instead of compadd? local classpath i expl local -a c local method type zparseopts -D -E -a classpath t:=type m:=method cp: classpath: : "$classpath[@]" classpath="${${classpath[2]:-${CLASSPATH:-.}}//\\:/:}" : "$classpath[@]" for i in "${(s.:.)classpath}"; do if [ -f $i ] && [[ "$i" == *.(jar|zip|war|ear) ]]; then c+=( ${${${(M)$(_call_program jar_classes jar -tf $i)##*.class}%%.class}:gs#/#.#} ) elif [ -d $i ]; then c+=( $i/**/*.class(.:r:s/.class//:s#$i/##:gs#/#.#) ) fi done _wanted classes expl 'java class' compadd "$@" -M 'r:|.=* r:|=*' -a c