From 4a34edc4855ef9d6a74c4658a2ed4f0f8bc1f130 Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Sun, 5 Sep 1999 22:04:03 +0000 Subject: Initial revision --- Completion/User/_perl_modules | 47 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Completion/User/_perl_modules (limited to 'Completion/User/_perl_modules') diff --git a/Completion/User/_perl_modules b/Completion/User/_perl_modules new file mode 100644 index 000000000..c909055ba --- /dev/null +++ b/Completion/User/_perl_modules @@ -0,0 +1,47 @@ +#compdef pmpath pmvers pmdesc pmload pmexp pmeth pmls pmcat pman pmfunc podgrep podtoc podpath +# +# +# _perl_modules - zsh completion function +# +# Adam Spiers +# +# Calculate all installed Perl modules. The result is cached +# for future use. +# +# Bugs: +# - can't cope with multiple installs of Perl + +# Change this if you have pminst and want to use it. The zsh code +# actually produces better results because pminst misses modules of +# the form Foo/bar/Baz.pm through its clumsy -d && /^[A-Z]/ && prune +# algorithm (the zsh code does almost the same, but only misses modules +# which don't begin with an uppercase letter). +local try_to_use_pminst=0 + +if [[ ${+_perl_modules} -eq 0 ]]; then + if [[ $try_to_use_pminst -ne 0 ]] && which pminst >/dev/null; then + _perl_modules=( $(pminst) ) + else + local inc libdir new_pms + inc=( $( perl -e 'print "@INC"' ) ) + typeset -agU _perl_modules # _perl_modules is global, no duplicates + _perl_modules=( ) + + for libdir in $inc; do + # Ignore cwd - could be too expensive e.g. if we're near / + if [[ $libdir == '.' ]]; then break; fi + + # Find all modules + cd $libdir + new_pms=( {[A-Z]*/**/,}*.pm(N) ) + cd $OLDPWD + + # Convert to Perl nomenclature + new_pms=( ${new_pms:r:fs#/#::#} ) + + _perl_modules=( $new_pms $_perl_modules ) + done + fi +fi + +compadd - $_perl_modules -- cgit 1.4.1