From 295fbc0998db7204a9eb68f46c8bedab171ff387 Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Mon, 29 Mar 2021 15:06:44 +0000 Subject: 48321 (tweaked per thread): _perl_modules: Don't assume ${words[1]} to be either "perl" or "perldoc" Also, correct an always-true condition guarding the fallback @INC codepath. --- Completion/Unix/Type/_perl_modules | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'Completion/Unix/Type') diff --git a/Completion/Unix/Type/_perl_modules b/Completion/Unix/Type/_perl_modules index d27a7f7af..3e11de9ea 100644 --- a/Completion/Unix/Type/_perl_modules +++ b/Completion/Unix/Type/_perl_modules @@ -60,10 +60,11 @@ _perl_modules () { with_pod=_with_pod fi - local perl=${words[1]%doc} perl_modules - if whence $perl >/dev/null; then + local perl perl_modules + if [[ $service == (perl|perldoc) ]] && whence -- ${${(Q)words[1]}%doc} >/dev/null; then + perl=$_ perl_modules=_${${perl//[^[:alnum:]]/_}#_}_modules$with_pod - elif (( ${+commands[perl]} )); then + elif whence perl > /dev/null; then perl=perl perl_modules=_perl_modules$with_pod else @@ -81,8 +82,8 @@ _perl_modules () { else local inc libdir new_pms - if [[ ${+perl} -eq 1 ]]; then - inc=( $( $perl -e 'print "@INC"' ) ) + if [[ -n $perl ]]; then + inc=( $( _call_program perl-inc ${(q)perl}$' -e \'print "@INC"\'' ) ) else # If perl isn't there, one wonders why the user's trying to # complete Perl modules. Maybe her $path is wrong? -- cgit 1.4.1