about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/Zle/computil.c4
-rw-r--r--Src/Zle/zle_tricky.c1
-rw-r--r--Src/utils.c6
3 files changed, 7 insertions, 4 deletions
diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c
index aed3d9808..e1ce68865 100644
--- a/Src/Zle/computil.c
+++ b/Src/Zle/computil.c
@@ -812,8 +812,8 @@ ca_get_opt(Cadef d, char *line, int full, char **end)
 		return p;
     } else {
 	for (p = d->opts; p; p = p->next)
-	    if (p->active && p->args && p->type != CAO_NEXT &&
-		strpfx(p->name, line)) {
+	    if (p->active && ((!p->args || p->type == CAO_NEXT) ?
+			      !strcmp(p->name, line) : strpfx(p->name, line))) {
 		if (end) {
 		    int l = strlen(p->name);
 
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index ebae044b9..be671ab50 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -5452,6 +5452,7 @@ set_comp_sep(void)
 
     if (compisuffix)
 	s = dyncat(s, compisuffix);
+    untokenize(s);
 
     return sep_comp_string("", s, lip + lp, 0);
 }
diff --git a/Src/utils.c b/Src/utils.c
index 140d00d32..1162968fd 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -91,8 +91,10 @@ zwarnnam(const char *cmd, const char *fmt, const char *str, int num)
 	nicezputs(scriptname ? scriptname : argzero, stderr);
 	fputs(": ", stderr);
     }
-    nicezputs(cmd, stderr);
-    fputs(": ", stderr);
+    if (cmd) {
+	nicezputs(cmd, stderr);
+	fputs(": ", stderr);
+    }
     zerrmsg(fmt, str, num);
 }