summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--Doc/Zsh/grammar.yo16
-rw-r--r--Src/parse.c4
3 files changed, 15 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 4c1fe2116..b7019d8d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2015-05-21 Peter Stephenson <p.stephenson@samsung.com>
+ * 35250: Doc/Zsh/grammar.yo: fix case documentation (SH_GLOB).
+
* 35248: Src/lex.c, Src/parse.c, Test/A01grammar.ztst:
treat fully parenthesised zsh patterns as complete
case patterns again.
diff --git a/Doc/Zsh/grammar.yo b/Doc/Zsh/grammar.yo
index a3f492769..4476fc392 100644
--- a/Doc/Zsh/grammar.yo
+++ b/Doc/Zsh/grammar.yo
@@ -239,11 +239,17 @@ item(tt(case) var(word) tt(in) [ [tt(LPAR())] var(pattern) [ tt(|) var(pattern)
Execute the var(list) associated with the first var(pattern)
that matches var(word), if any. The form of the patterns
is the same as that used for filename generation. See
-noderef(Filename Generation). Note further that the whole
-pattern with alternatives is treated by the shell as equivalent
-to a group of patterns within parentheses, even though in
-the tt(case) syntax whitespace may appear about the parentheses and the
-vertical bar.
+noderef(Filename Generation).
+
+Note further that, unless the tt(SH_GLOB) option is set, the whole
+pattern with alternatives is treated by the shell as equivalent to a
+group of patterns within parentheses, although white space may appear
+about the parentheses and the vertical bar and will be stripped from the
+pattern at those points. White space may appear elsewhere in the
+pattern; this is not stripped. If the tt(SH_GLOB) option is set, so
+that an opening parenthesis can be unambiguously treated as part of the
+case syntax, the expression is parsed into separate words and these are
+treated as strict alternatives (as in other shells).
If the var(list) that is executed is terminated with tt(;&) rather than
tt(;;), the following list is also executed. The rule for
diff --git a/Src/parse.c b/Src/parse.c
index 053db3fe2..06cea744e 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -1183,7 +1183,7 @@ par_case(int *cmplx)
*
* The next token we get may be
* - ")" or "|" if we're looking at an honest-to-god
- * "case" patten, either because there's no opening
+ * "case" pattern, either because there's no opening
* parenthesis, or because SH_GLOB is set and we
* managed to grab an initial "(" to mark the start
* of the case pattern.
@@ -1196,7 +1196,7 @@ par_case(int *cmplx)
* the string, so may be separated by whitespace.
* So we quietly massage the whitespace and hope
* no one noticed. This is horrible, but it's
- * unfortunately too difficult to comine traditional
+ * unfortunately too difficult to combine traditional
* zsh patterns with a properly parsed case pattern
* without generating incompatibilities which aren't
* all that popular (I've discovered).