From 5e516898d73dd797248082daefeb4147ae20fec4 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 1 Oct 2014 20:36:55 +0100 Subject: 33312: document redirections applied to function definitions --- Doc/Zsh/builtins.yo | 14 ++++++++++++++ Doc/Zsh/grammar.yo | 9 +++++++++ 2 files changed, 23 insertions(+) (limited to 'Doc') diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo index 9862c637e..41c189fe2 100644 --- a/Doc/Zsh/builtins.yo +++ b/Doc/Zsh/builtins.yo @@ -2174,6 +2174,20 @@ match one of these patterns will be written. If no var(name) is given, the definitions of all functions currently defined or marked as autoloaded will be written. +Note the second form cannot be used for compiling functions that +include redirections as part of the definition rather than within +the body of the function; for example + +example(fn1() { { ... } >~/logfile }) + +can be compiled but + +example(fn1() { ... } >~/logfile) + +cannot. It is possible to use the first form of tt(zcompile) to compile +autoloadable functions that include the full function definition instead +of just the body of the function. + The third form, with the tt(-t) option, examines an existing compiled file. Without further arguments, the names of the original files compiled into it are listed. The first line of output shows diff --git a/Doc/Zsh/grammar.yo b/Doc/Zsh/grammar.yo index 77f0098e3..eb1edf7f8 100644 --- a/Doc/Zsh/grammar.yo +++ b/Doc/Zsh/grammar.yo @@ -352,6 +352,15 @@ If the option tt(SH_GLOB) is set for compatibility with other shells, then whitespace may appear between between the left and right parentheses when there is a single var(word); otherwise, the parentheses will be treated as forming a globbing pattern in that case. + +In any of the forms above, a redirection may appear outside the +function body, for example + +example(func() { ... } 2>&1) + +The redirection is stored with the function and applied whenever the +function is executed. Any variables in the redirection are expanded +at the point the function is executed, but outside the function scope. ) cindex(timing) findex(time) -- cgit 1.4.1