diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Completion/Unix/Type/_perl_builtin_funcs | 30 |
2 files changed, 8 insertions, 27 deletions
diff --git a/ChangeLog b/ChangeLog index 0e086a92e..bad67b4a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-04-24 Oliver Kiddle <opk@zsh.org> + + * 18468: Completion/Unix/Type/_perl_builtin_funcs: follow Bart's + suggestion of using perldoc itself to retrieve the documentation + 2003-04-23 Peter Stephenson <pws@pwstephenson.fsnet.co.uk> * 18467: Src/Zle/computil.c: null pointer dereferenced with diff --git a/Completion/Unix/Type/_perl_builtin_funcs b/Completion/Unix/Type/_perl_builtin_funcs index 1c01a0dd6..829a53e60 100644 --- a/Completion/Unix/Type/_perl_builtin_funcs +++ b/Completion/Unix/Type/_perl_builtin_funcs @@ -1,33 +1,9 @@ #autoload -# -# Parses perlfunc(1) to get a list of perl functions. The result is cached -# for future use. - -if (( ! $+_perl_builtin_funcs )); then - typeset -agU _perl_builtin_funcs - local 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 - _message "can't find perlfunc man page; giving up" - return 1 - fi -fi local expl +: ${(A)_perl_builtin_funcs:=${(u)${${(M)${(f)"$(_call_program functions \ + perldoc -u perlfunc 2>/dev/null)"}:#\=item [a-z]*}#* }%%[^a-z]*}} + _wanted functions expl 'perl built-in function' compadd "$@" -a - \ _perl_builtin_funcs |