diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Src/Zle/computil.c | 2 | ||||
-rw-r--r-- | Test/Y03arguments.ztst | 6 |
3 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index d11b6ebd6..371f08ca8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2017-09-28 Oliver Kiddle <opk@zsh.org> + * 41772: Src/Zle/computil.c, Test/Y03arguments.ztst: fix bug + in handling of long options with _arguments' -A option + * 41762: Completion/Zsh/Context/_value: fix for completion in assignment to associative array element diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c index e704f9ffa..0368a07d0 100644 --- a/Src/Zle/computil.c +++ b/Src/Zle/computil.c @@ -1824,7 +1824,7 @@ ca_inactive(Cadef d, char **xor, int cur, int opts) char *x; /* current word could be a prefix of a longer one so only do * exclusions for single-letter options (for option clumping) */ - int single = (cur == compcurrent); + int single = !opts && (cur == compcurrent); for (; (x = (opts ? "-" : *xor)); xor++) { int excludeall = 0; diff --git a/Test/Y03arguments.ztst b/Test/Y03arguments.ztst index 25bb96b84..94ce8361e 100644 --- a/Test/Y03arguments.ztst +++ b/Test/Y03arguments.ztst @@ -333,6 +333,12 @@ 0:option after a word >line: {tst word -x }{} + tst_arguments -A '-*' -x --extra ::first + comptest $'tst word -\t' +0:long option after word that doesn't match -A pattern +>line: {tst word -}{} +>MESSAGE:{no more arguments} + tst_arguments -A'-*' -x :word comptest $'tst word -\t' 0:option after word that doesn't match -A pattern, no space before pattern |