zsh-workers
 help / color / mirror / code / Atom feed
From: Oliver Kiddle <okiddle@yahoo.co.uk>
To: Zsh workers <zsh-workers@zsh.org>
Subject: PATCH: _arguments -W fix
Date: Mon, 02 Apr 2018 23:23:03 +0200	[thread overview]
Message-ID: <16039.1522704183@thecus> (raw)

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


                 reply	other threads:[~2018-04-02 21:23 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=16039.1522704183@thecus \
    --to=okiddle@yahoo.co.uk \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).