about summary refs log tree commit diff
path: root/Src/Zle/complete.c
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-01-04 09:38:14 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-01-04 09:38:14 +0000
commit2f76a51352acacc7618f771dfbe2144fed9f4acd (patch)
tree56763dbdc0abd35b669200673692bd03a84bac2f /Src/Zle/complete.c
parent3259e583b0d8505c099ab76ca7cec264511c45e8 (diff)
downloadzsh-2f76a51352acacc7618f771dfbe2144fed9f4acd.tar.gz
zsh-2f76a51352acacc7618f771dfbe2144fed9f4acd.tar.xz
zsh-2f76a51352acacc7618f771dfbe2144fed9f4acd.zip
zsh-workers/9191
Diffstat (limited to 'Src/Zle/complete.c')
-rw-r--r--Src/Zle/complete.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c
index bf3102972..afcec261a 100644
--- a/Src/Zle/complete.c
+++ b/Src/Zle/complete.c
@@ -435,7 +435,7 @@ static int
 bin_compadd(char *name, char **argv, char *ops, int func)
 {
     struct cadata dat;
-    char *p, **sp, *e, *m = NULL;
+    char *p, **sp, *e, *m = NULL, *mstr = NULL;
     int dm;
     Cmatcher match = NULL;
 
@@ -590,13 +590,21 @@ bin_compadd(char *name, char **argv, char *ops, int func)
 		    zerrnam(name, e, NULL, *p);
 		    return 1;
 		}
-		if (dm && (match = parse_cmatcher(name, m)) == pcm_err) {
-		    match = NULL;
-		    return 1;
+		if (dm) {
+		    if (mstr)
+			mstr = tricat(mstr, " ", m);
+		    else
+			mstr = ztrdup(m);
 		}
 	    }
 	}
     }
+    if (mstr && (match = parse_cmatcher(name, mstr)) == pcm_err) {
+	zsfree(mstr);
+	return 1;
+    }
+    zsfree(mstr);
+
  ca_args:
 
     if (!*argv && !dat.group &&