about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniel Shahaf <d.s@daniel.shahaf.name>2016-09-08 11:01:15 +0000
committerDaniel Shahaf <d.s@daniel.shahaf.name>2016-09-08 17:15:40 +0000
commit73622ae2880a599ad7ed84d43538c34cf55a48ca (patch)
treec532fc87588f22d69c28fb5b30233521eda38fcf
parent198c7bc2324d58ddc39c180b74eb7c00834fe623 (diff)
downloadzsh-73622ae2880a599ad7ed84d43538c34cf55a48ca.tar.gz
zsh-73622ae2880a599ad7ed84d43538c34cf55a48ca.tar.xz
zsh-73622ae2880a599ad7ed84d43538c34cf55a48ca.zip
39236 (plus typo fix): docs: Tweak _arguments $opt_args documentation added in 39173.
-rw-r--r--ChangeLog5
-rw-r--r--Doc/Zsh/compsys.yo4
-rw-r--r--README11
3 files changed, 14 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index a45011ed3..2651b7343 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-09-08  Daniel Shahaf  <d.s@daniel.shahaf.name>
+
+	* 39236 (plus typo fix): Doc/Zsh/compsys.yo, README: docs: Tweak
+	_arguments $opt_args documentation added in 39173.
+
 2016-09-08  Peter Stephenson  <p.stephenson@samsung.com>
 
 	* 39222: Test/V01zmodload.ztst: test use of module loaded math
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index b2cc39268..ecf17e728 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -3949,9 +3949,7 @@ arguments.  Options are stored in the associative array
 `tt(opt_args)' with option names as keys and their arguments as
 the values.  For options that have more than one argument these are
 given as one string, separated by colons.  All colons and backslashes
-in the original arguments are preceded with backslashes.  (Note:
-Zsh 5.2 and older did not escape backslashes in the original string;
-see the tt(NEWS) file for details.)
+in the original arguments are preceded with backslashes.
 
 The parameter `tt(context)' is set when returning to the calling function
 to perform an action of the form `tt(->)var(string)'.  It is set to an
diff --git a/README b/README
index 019294e4b..d146d4b16 100644
--- a/README
+++ b/README
@@ -91,10 +91,15 @@ equivalent of "*(1)") as well as many other forms.
 and colons in the values of option arguments when populating the $opt_args
 associative array.  Previously, colons were escaped with a backslash but
 backslashes were not themselves escaped with a backslash, which lead to
-ambiguity: if the -x option took two arguments (as in
+ambiguity: '-x foo\:bar' (one argument with a backslashed colon) and
+'-x foo\\ bar' (two arguments, and the first one ends in a backslash) would
+both set $opt_args[-x] to the same value.  This example assumes the -x
+option's spec declared two arguments, as in:
     _arguments : -x:foo:${action}:bar:$action
-), it would be impossible to tell from $opt_args whether the command-line
-was '-x foo\:bar' or '-x foo\\ bar'.
+
+For the more common case of non-repeatable options that take a single
+argument, completion functions now have to unescape not only colons but
+also backslashes when obtaining the option's argument from $opt_args.
 
 Incompatibilities between 5.0.8 and 5.2
 ---------------------------------------