about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2016-03-07 13:15:40 +0100
committerOliver Kiddle <opk@zsh.org>2016-03-07 13:15:40 +0100
commit8c29b34032ebb714d2c593286aa29e5c64be55ab (patch)
tree31473652c376b1d4c336feda1cf9162aafecb5bc
parent28c46c1bfb03fd7d1f563147435a4071b446f780 (diff)
downloadzsh-8c29b34032ebb714d2c593286aa29e5c64be55ab.tar.gz
zsh-8c29b34032ebb714d2c593286aa29e5c64be55ab.tar.xz
zsh-8c29b34032ebb714d2c593286aa29e5c64be55ab.zip
38043: allow any completion widget to cycle matches for menu completion to fix reverse menu completion
-rw-r--r--ChangeLog6
-rw-r--r--Src/Zle/compcore.c8
-rw-r--r--Src/Zle/complist.c2
-rw-r--r--Src/Zle/zle_tricky.c3
4 files changed, 9 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 420eb261d..f3af39aab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-03-07  Oliver Kiddle  <opk@zsh.org>
+
+	* 38043: Src/Zle/compcore.c, Src/Zle/complist.c,
+	Src/Zle/zle_tricky.c: allow any completion widget to cycle matches
+	for menu completion to fix reverse menu completion
+
 2016-03-07  Peter Stephenson  <p.stephenson@samsung.com>
 
 	* 38111: Src/parse.c: remove redundant return values from
diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c
index ae3a64074..ae7068fc9 100644
--- a/Src/Zle/compcore.c
+++ b/Src/Zle/compcore.c
@@ -30,10 +30,6 @@
 #include "complete.mdh"
 #include "compcore.pro"
 
-/* The last completion widget called. */
-
-static Widget lastcompwidget;
-
 /* Flags saying what we have to do with the result. */
 
 /**/
@@ -471,8 +467,7 @@ before_complete(UNUSED(Hookdef dummy), int *lst)
 
     /* If we are doing a menu-completion... */
 
-    if (minfo.cur && menucmp && *lst != COMP_LIST_EXPAND && 
-	(menucmp != 1 || !compwidget || compwidget == lastcompwidget)) {
+    if (minfo.cur && menucmp && *lst != COMP_LIST_EXPAND) {
 	do_menucmp(*lst);
 	return 1;
     }
@@ -481,7 +476,6 @@ before_complete(UNUSED(Hookdef dummy), int *lst)
 	onlyexpl = listdat.valid = 0;
 	return 1;
     }
-    lastcompwidget = compwidget;
 
     /* We may have to reset the cursor to its position after the   *
      * string inserted by the last completion. */
diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c
index 162436b55..8aeb6c3b8 100644
--- a/Src/Zle/complist.c
+++ b/Src/Zle/complist.c
@@ -3399,7 +3399,7 @@ domenuselect(Hookdef dummy, Chdata dat)
 	do_single(*(minfo.cur));
     }
     if (wasnext || broken) {
-	menucmp = 2;
+	menucmp = 1;
 	showinglist = ((validlist && !nolist) ? -2 : 0);
 	minfo.asked = 0;
 	if (!noselect) {
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index cc4b7d673..a89b2a376 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -100,8 +100,7 @@ mod_export int usemenu, useglob;
 /**/
 mod_export int wouldinstab;
 
-/* != 0 if we are in the middle of a menu completion. May be == 2 to force *
- * menu completion even if using different widgets.                        */
+/* != 0 if we are in the middle of a menu completion. */
 
 /**/
 mod_export int menucmp;