From 9e302211abf5c6403b15feb128a822921f13674e Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Wed, 23 Apr 2003 10:41:13 +0000 Subject: 18461: handle cases where the perlfunc man page is compressed --- ChangeLog | 5 +++++ Completion/Unix/Type/_perl_builtin_funcs | 36 +++++++++++++++++--------------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 07f93d748..ad25b8b1b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-04-23 Oliver Kiddle + + * 18461: Completion/Unix/Type/_perl_builtin_funcs: handle cases + where the perlfunc man page is compressed + 2003-04-22 Felix Rosencrantz * 18459: Completion/Unix/Command/_screen: fix up suggestions from diff --git a/Completion/Unix/Type/_perl_builtin_funcs b/Completion/Unix/Type/_perl_builtin_funcs index 65eebf9b1..1c01a0dd6 100644 --- a/Completion/Unix/Type/_perl_builtin_funcs +++ b/Completion/Unix/Type/_perl_builtin_funcs @@ -1,31 +1,33 @@ #autoload # -# _perl_builtin_funcs - zsh completion function -# -# Adam Spiers -# -# Calculate all built-in Perl functions. The result is cached +# Parses perlfunc(1) to get a list of perl functions. The result is cached # for future use. -# -if [[ ${+_perl_builtin_funcs} -eq 0 ]]; then +if (( ! $+_perl_builtin_funcs )); then typeset -agU _perl_builtin_funcs local perlfunc - if [[ -n "${perlfunc:=$(man -w perlfunc 2>/dev/null; print -l ${^manpath}/man1/perlfunc.1(N) {/usr/man,/usr/share/man,/usr/local/man}/man1/perlfunc.1(N))}" ]]; then - _perl_builtin_funcs=( `perl -lne ' - $in_funcs++, next if /Alphabetical/; \ - next unless $in_funcs; \ - if (/^\.Ip "(\w+)/) { \ - print $1 unless $func{$1}; $func{$1}++ \ - }' $=perlfunc` - ) + if [[ -n "${perlfunc:=$(man -w perlfunc 2>/dev/null; print -l ${^manpath:-${(s.:.)$(manpath)}}/man1/perlfunc.1(|[zZ]|gz|bz2)(N) {/usr/man,/usr/share/man,/usr/local/man}/man1/perlfunc.1(|[zZ]|gz|bz2)(N))}" ]]; then + case $perlfunc in + *.bz2) perlfunc="bzip2 -cd $perlfunc" ;; + *[zZ]) perlfunc="gzip -cd $perlfunc" ;; + *) perlfunc="cat $perlfunc" ;; + esac + _perl_builtin_funcs=( + $($=perlfunc | perl -lne ' + $in_funcs++, next if /Alphabetical/; + next unless $in_funcs; + if (/^\.I[pP] "(\w+)/) { + print $1 unless $func{$1}; $func{$1}++ + }') + ) else - echo "Couldn't find perlfunc man page; giving up." + _message "can't find perlfunc man page; giving up" return 1 fi fi local expl -_wanted functions expl 'Perl built-in functions' compadd -a _perl_builtin_funcs +_wanted functions expl 'perl built-in function' compadd "$@" -a - \ + _perl_builtin_funcs -- cgit 1.4.1