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. --- ChangeLog | 5 +++++ Completion/Unix/Type/_perl_modules | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 318516bb6..429cd0376 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2021-04-08 Daniel Shahaf + + * 48321 (tweaked per thread): Completion/Unix/Type/_perl_modules: + Don't assume ${words[1]} to be either "perl" or "perldoc" + 2021-04-07 Daniel Shahaf * 48425: Test/V05styles.ztst: Add an XFail test for a 'zstyle 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