about summary refs log tree commit diff
path: root/Src/Zle
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-03-13 10:23:38 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-03-13 10:23:38 +0000
commit963043760fdda262131532a724f0d6b1606888d5 (patch)
tree510f1b4279360935b988a8b071ed0f3aa1451586 /Src/Zle
parent16ea1f357d02481efa55d5304ab8f452e37ca6b4 (diff)
downloadzsh-963043760fdda262131532a724f0d6b1606888d5.tar.gz
zsh-963043760fdda262131532a724f0d6b1606888d5.tar.xz
zsh-963043760fdda262131532a724f0d6b1606888d5.zip
zsh-workers/10107
Diffstat (limited to 'Src/Zle')
-rw-r--r--Src/Zle/complete.c7
-rw-r--r--Src/Zle/compmatch.c6
2 files changed, 8 insertions, 5 deletions
diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c
index 10d7ea8e4..0bc2d55fc 100644
--- a/Src/Zle/complete.c
+++ b/Src/Zle/complete.c
@@ -253,8 +253,11 @@ parse_cmatcher(char *name, char *s)
 		return pcm_err;
 	    }
 	    word = NULL;
-	    wl = -1;
-	    s++;
+	    if (*++s == '*') {
+		s++;
+		wl = -2;
+	    } else
+		wl = -1;
 	} else {
 	    word = parse_pattern(name, &s, &wl, 0, &err);
 
diff --git a/Src/Zle/compmatch.c b/Src/Zle/compmatch.c
index 8dc6527c8..e4babe628 100644
--- a/Src/Zle/compmatch.c
+++ b/Src/Zle/compmatch.c
@@ -75,7 +75,7 @@ add_bmatchers(Cmatcher m)
 
     for (; m; m = m->next) {
 	if ((!m->flags && m->wlen > 0 && m->llen > 0) ||
-	    (m->flags == CMF_RIGHT && m->wlen == -1 && !m->llen)) {
+	    (m->flags == CMF_RIGHT && m->wlen < 0 && !m->llen)) {
 	    *q = n = (Cmlist) zhalloc(sizeof(struct cmlist));
 	    n->matcher = m;
 	    q = &(n->next);
@@ -546,7 +546,7 @@ match_str(char *l, char *w, Brinfo *bpp, int bc, int *rwlp,
 			    } else
 				t = match_str(l + llen + moff, tp + moff,
 					      NULL, 0, NULL, 0, 1, part);
-			    if (t || !both)
+			    if (t || (mp->wlen == -1 && !both))
 				break;
 			}
 		    }
@@ -1008,7 +1008,7 @@ bld_parts(char *str, int len, int plen, Cline *lp)
     while (len) {
 	for (t = 0, ms = bmatchers; ms && !t; ms = ms->next) {
 	    mp = ms->matcher;
-	    if (mp && mp->flags == CMF_RIGHT && mp->wlen == -1 &&
+	    if (mp && mp->flags == CMF_RIGHT && mp->wlen < 0 &&
 		!mp->llen && len >= mp->ralen && mp->ralen &&
 		pattern_match(mp->right, str, NULL, NULL)) {
 		int olen = str - p, llen;