zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: _arguments -W fix
@ 2018-04-02 21:23 Oliver Kiddle
  0 siblings, 0 replies; only message in thread
From: Oliver Kiddle @ 2018-04-02 21:23 UTC (permalink / raw)
  To: Zsh workers

This fixes a bug introduced in 41824 that could cause options to be completed
in the argument to another option position.

The condition had originally been (lstate->doff && lstate->def). Much
of the 41824 changes relate to doff which is essentially the number of
characters moved to $IPREFIX. The original purpose of that condition
appears to only apply with _arguments' unusual -W option. That option
isn't covered in the tests.

Oliver

diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c
index 4ce8eeee5..2e86e5740 100644
--- a/Src/Zle/computil.c
+++ b/Src/Zle/computil.c
@@ -2675,7 +2675,7 @@ bin_comparguments(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
 
 	    for (; lstate; lstate = lstate->snext) {
 		if (lstate->actopts &&
-		    (lstate->opt || lstate->def ||
+		    (lstate->opt || (ca_doff && lstate->def) ||
 		     (lstate->def && lstate->def->opt &&
 		      (lstate->def->type == CAA_OPT ||
 		       (lstate->def->type >= CAA_RARGS &&
diff --git a/Test/Y03arguments.ztst b/Test/Y03arguments.ztst
index 761b4b1d2..fa4589374 100644
--- a/Test/Y03arguments.ztst
+++ b/Test/Y03arguments.ztst
@@ -184,6 +184,12 @@
 0:sticky option argument
 >line: {tst -x }{}
 
+ tst_arguments '-x:arg' -y -z
+ comptest $'tst -x -\t'
+0:option argument with prefix that passes option prefix-needed test
+>line: {tst -x -}{}
+>DESCRIPTION:{arg}
+
  tst_arguments '-x[desc]'
  comptest $'tst -x\t'
 0:end of option sequence
@@ -721,6 +727,15 @@ F:shouldn't offer -t in the first case (with stacked options)
 >line: {tst --prefix=one }{}
 >line: {tst --prefix=one --prop=}{}
 
+ tst_arguments -s -W -a+:arg -b
+ comptest $'tst -a\t'
+0:with -W options mixed with arguments
+>line: {tst -a}{}
+>DESCRIPTION:{arg}
+>DESCRIPTION:{option}
+>NO:{-b}
+
+
 %clean
 
   zmodload -ui zsh/zpty


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-04-02 21:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-02 21:23 PATCH: _arguments -W fix Oliver Kiddle

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).