From 66576ecbf8378a0d93e5ae7da7822c1a21fa219d Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Fri, 17 Aug 2001 09:25:21 +0000 Subject: 15650 --- Src/Zle/compcore.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'Src') diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c index d3f720478..f75c8dc20 100644 --- a/Src/Zle/compcore.c +++ b/Src/Zle/compcore.c @@ -1782,21 +1782,23 @@ addmatches(Cadata dat, char **argv) } else lsl = 0; if (dat->aflags & CAF_MATCH) { - int ml, gfl = 0; + int ml, gfl = 0, tildepat = 0; char *globflag = NULL; if (comppatmatch && *comppatmatch && - dat->ppre && lpre[0] == '(' && lpre[1] == '#') { + lpre[0] == '(' && lpre[1] == '#') { char *p; for (p = lpre + 2; *p && *p != ')'; p++); - if (*p == ')') { + if (*p == ')' && (dat->ppre || p[1] == '~')) { char sav = p[1]; p[1] = '\0'; globflag = dupstring(lpre); gfl = p - lpre + 1; + if (!dat->ppre) + tildepat = 1; p[1] = sav; lpre = p + 1; @@ -1859,7 +1861,11 @@ addmatches(Cadata dat, char **argv) int is = (*comppatmatch == '*'); char *tmp = (char *) zhalloc(2 + llpl + llsl + gfl); - if (gfl) { + if (tildepat) { + tmp[0] = '~'; + strcpy(tmp + 1, globflag); + strcat(tmp, lpre + 1); + } else if (gfl) { strcpy(tmp, globflag); strcat(tmp, lpre); } else -- cgit 1.4.1