diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2009-05-19 15:33:24 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2009-05-19 15:33:24 +0000 |
commit | ad3d514ac79b573ce43fa7089175de519f39f21d (patch) | |
tree | c5dc3b1284102a6e51c01d210bae81d8bb475f85 /Functions/Misc | |
parent | cac27544ff9d42069acd89a7587a2f9b581a9a2b (diff) | |
download | zsh-ad3d514ac79b573ce43fa7089175de519f39f21d.tar.gz zsh-ad3d514ac79b573ce43fa7089175de519f39f21d.tar.xz zsh-ad3d514ac79b573ce43fa7089175de519f39f21d.zip |
26973: zmathfuncdef enhancements
Diffstat (limited to 'Functions/Misc')
-rw-r--r-- | Functions/Misc/zmathfuncdef | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Functions/Misc/zmathfuncdef b/Functions/Misc/zmathfuncdef index 21d3c249e..e5692e769 100644 --- a/Functions/Misc/zmathfuncdef +++ b/Functions/Misc/zmathfuncdef @@ -5,18 +5,34 @@ emulate -L zsh setopt extendedglob +local -a match mbegin mend line +local func -if (( $# < 1 || $# > 2 )); then - print "Usage: $0 name [body]" >&2 +if (( $# > 2 )); then + print "Usage: $0 [name [body]]" >&2 return 1 fi +zmodload -i zsh/parameter || return 1 + +if (( $# == 0 )); then + functions -M | while read -A line; do + func=${functions[$line[6]]} + if [[ $func = (#b)[[:space:]]#\(\([[:space:]]#(*[^[:space:]])[[:space:]]#\)\) ]]; then + print "zmathfuncdef $line[3] ${(qq)match[1]}" + fi + done + return 0 +fi + local mname=$1 local fname="zsh_math_func_$1" if (( $# == 1 )); then functions +M $mname && unfunction $fname return 0 +elif [[ -n $functions[$fname] ]]; then + functions +M $mname fi integer iarg=0 ioptarg |