diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Doc/Zsh/options.yo | 8 | ||||
-rw-r--r-- | Src/options.c | 1 | ||||
-rw-r--r-- | Src/parse.c | 3 | ||||
-rw-r--r-- | Src/zsh.h | 1 |
5 files changed, 18 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 757c08faf..f2929793f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-09-11 Peter Stephenson <pws@csr.com> + + * 25641: add option (NO_)MULTI_FUNC_DEF to turn off "foo1 + foo2...()" function definitions. + 2008-09-10 Clint Adams <clint@zsh.org> * Frank Terbeck: 25640: Completion/Unix/Command/_git: another alias diff --git a/Doc/Zsh/options.yo b/Doc/Zsh/options.yo index defb9c08c..5c7b29cfd 100644 --- a/Doc/Zsh/options.yo +++ b/Doc/Zsh/options.yo @@ -1133,6 +1133,14 @@ fn+LPAR()RPAR() { setopt localtraps; trap '' INT; sleep 3; }) will restore normally handling of tt(SIGINT) after the function exits. ) +pindex(MULTI_FUNC_DEF) +item(tt(MULTI_FUNC_DEF) <Z>)( +Allow definitions of multiple functions at once in the form `tt(fn1 +fn2)var(...)tt(LPAR()RPAR())'; if the option is not set, this causes +a parse error. Definition of multiple functions with the tt(function) +keyword is always allowed. Multiple function definitions are not often +used and can cause obscure errors. +) pindex(MULTIOS) item(tt(MULTIOS) <Z>)( Perform implicit bf(tee)s or bf(cat)s when multiple diff --git a/Src/options.c b/Src/options.c index 80e05b343..3c7f88048 100644 --- a/Src/options.c +++ b/Src/options.c @@ -181,6 +181,7 @@ static struct optname optns[] = { 0 #endif }, MULTIBYTE}, +{{NULL, "multifuncdef", OPT_EMULATE|OPT_ZSH}, MULTIFUNCDEF}, {{NULL, "multios", OPT_EMULATE|OPT_ZSH}, MULTIOS}, {{NULL, "nomatch", OPT_EMULATE|OPT_NONBOURNE},NOMATCH}, {{NULL, "notify", OPT_ZSH}, NOTIFY}, diff --git a/Src/parse.c b/Src/parse.c index 0812f9137..1b9a561e0 100644 --- a/Src/parse.c +++ b/Src/parse.c @@ -1663,6 +1663,9 @@ par_simple(int *complex, int nr) zlong oldlineno = lineno; int onp, so, oecssub = ecssub; + if (!isset(MULTIFUNCDEF) && argc > 1) + YYERROR(oecused); + *complex = c; lineno = 0; incmdpos = 1; diff --git a/Src/zsh.h b/Src/zsh.h index 9326e1a11..1e043bf29 100644 --- a/Src/zsh.h +++ b/Src/zsh.h @@ -1882,6 +1882,7 @@ enum { MENUCOMPLETE, MONITOR, MULTIBYTE, + MULTIFUNCDEF, MULTIOS, NOMATCH, NOTIFY, |