summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-10-03 16:18:38 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-10-03 16:18:38 +0000
commit91b9f3d7866c8c27c693d65ae1f42609227b907b (patch)
tree5b9bee2cf48bb51da0cd1710b230117a38e1d310 /Src
parent0245917d65c5007d7e42745fe1c106ed2e8d32e3 (diff)
downloadzsh-91b9f3d7866c8c27c693d65ae1f42609227b907b.tar.gz
zsh-91b9f3d7866c8c27c693d65ae1f42609227b907b.tar.xz
zsh-91b9f3d7866c8c27c693d65ae1f42609227b907b.zip
23900: Better handling of NO_EQUALS in old completion
Diffstat (limited to 'Src')
-rw-r--r--Src/Zle/compctl.c2
-rw-r--r--Src/Zle/zle_tricky.c7
2 files changed, 8 insertions, 1 deletions
diff --git a/Src/Zle/compctl.c b/Src/Zle/compctl.c
index 143c93682..57bfccd49 100644
--- a/Src/Zle/compctl.c
+++ b/Src/Zle/compctl.c
@@ -3501,7 +3501,7 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
 					p++;
 				/* Get the pattern string. */
 				tokenize(g = dupstrpfx(g, p - g));
-				if (*g == '=')
+				if (*g == '=' && isset(EQUALS))
 				    *g = Equals;
 				if (*g == '~')
 				    *g = Tilde;
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index b3b1dfd3e..09e4ae8e1 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -1608,6 +1608,13 @@ get_comp_string(void)
                     *q = Bnull;
         }
     }
+    /*
+     * Leading "=" gets tokenized in case the EQUALS options
+     * changes afterwards.  It's too late for that now, so restore it
+     * to a plain "=" if the option is unset.
+     */
+    if (*s == Equals && !isset(EQUALS))
+	*s = '=';
     /* While building the quoted form, we also clean up the command line. */
     for (p = s, i = wb, j = 0; *p; p++, i++) {
 	int skipchars;