summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2016-11-16 09:42:49 +0100
committerOliver Kiddle <opk@zsh.org>2016-11-16 09:42:49 +0100
commit7d2f8050088f61444fc6117cf1e7bfe8d440d73c (patch)
treefc912a644bc765da73ea89a6ad09eee7871312f8
parent98b7960c78ef720c3d830bef2258f6aa86c055de (diff)
downloadzsh-7d2f8050088f61444fc6117cf1e7bfe8d440d73c.tar.gz
zsh-7d2f8050088f61444fc6117cf1e7bfe8d440d73c.zip
39945: allow further tab presses to move on to menu completion even when compstate[insert] is emptied
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Base/Core/_message3
-rw-r--r--Src/Zle/compcore.c1
-rw-r--r--Test/Y03arguments.ztst61
4 files changed, 70 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 488f1ed45..cdc89a86d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-11-16 Oliver Kiddle <opk@zsh.org>
+
+ * 39945: Src/Zle/compcore.c, Completion/Base/Core/_message,
+ Test/Y03arguments.ztst: allow further tab presses to move on
+ to menu completion even when compstate[insert] is emptied
+
2016-11-15 Peter Stephenson <p.stephenson@samsung.com>
* 39949: Src/subst.c, Src/utils.c, Test/B09hash.ztst: "-" is
diff --git a/Completion/Base/Core/_message b/Completion/Base/Core/_message
index 13c83989f..4d5645eaf 100644
--- a/Completion/Base/Core/_message
+++ b/Completion/Base/Core/_message
@@ -18,7 +18,8 @@ if [[ "$1" = -e ]]; then
ret=0
done
- (( $compstate[nmatches] )) || compstate[insert]=
+ (( ! $compstate[nmatches] )) && [[ $compstate[insert] = *unambiguous* ]] &&
+ compstate[insert]=
return ret
fi
diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c
index 536bca7b3..d1cf7a08a 100644
--- a/Src/Zle/compcore.c
+++ b/Src/Zle/compcore.c
@@ -425,6 +425,7 @@ do_completion(UNUSED(Hookdef dummy), Compldat dat)
}
} else {
invalidatelist();
+ lastambig = isset(BASHAUTOLIST);
if (forcelist)
clearlist = 1;
zlemetacs = 0;
diff --git a/Test/Y03arguments.ztst b/Test/Y03arguments.ztst
index 3ada16844..0763c419d 100644
--- a/Test/Y03arguments.ztst
+++ b/Test/Y03arguments.ztst
@@ -243,6 +243,67 @@
>NO:{-a}
>NO:{-b}
+ tst_arguments --abc --aah :arg:
+ comptesteval 'setopt bashautolist automenu'
+ comptest $'tst --a\t\t\t'
+0:with message and bashautolist, a third tab will get menu completion
+>line: {tst --a}{}
+>line: {tst --a}{}
+>DESCRIPTION:{arg}
+>DESCRIPTION:{option}
+>NO:{--aah}
+>NO:{--abc}
+>line: {tst --aah}{}
+
+ tst_arguments --abc --aah :arg:
+ comptesteval 'setopt bashautolist noautomenu'
+ comptest $'tst --a\t\t\t'
+0:with message and bashautolist, a third tab is needed to display the list
+>line: {tst --a}{}
+>line: {tst --a}{}
+>DESCRIPTION:{arg}
+>DESCRIPTION:{option}
+>NO:{--aah}
+>NO:{--abc}
+>line: {tst --a}{}
+
+ tst_arguments --abc --aah :arg:
+ comptesteval 'setopt nobashautolist noautomenu'
+ comptest $'tst --\t\t'
+0:with message and noautomenu second tab redisplays the list
+>line: {tst --}{}
+>DESCRIPTION:{arg}
+>DESCRIPTION:{option}
+>NO:{--aah}
+>NO:{--abc}
+>line: {tst --}{}
+>DESCRIPTION:{arg}
+>DESCRIPTION:{option}
+>NO:{--aah}
+>NO:{--abc}
+
+ tst_arguments --abc --aah :arg:
+ comptesteval 'setopt nobashautolist automenu'
+ comptest $'tst --\t\t'
+0:with message two tabs will start menu completion
+>line: {tst --}{}
+>DESCRIPTION:{arg}
+>DESCRIPTION:{option}
+>NO:{--aah}
+>NO:{--abc}
+>line: {tst --aah}{}
+
+ tst_arguments --abc --aah :arg:
+ comptesteval 'zstyle ":completion:*::::" completer _oldlist _complete'
+ comptest $'tst --\t\t'
+0:with message and _oldlist, two tabs will start menu completion
+>line: {tst --}{}
+>DESCRIPTION:{arg}
+>DESCRIPTION:{option}
+>NO:{--aah}
+>NO:{--abc}
+>line: {tst --aah}{}
+
%clean
zmodload -ui zsh/zpty