summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Base/Completer/_approximate11
-rw-r--r--Src/Zle/compcore.c14
3 files changed, 15 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index 52e8b7104..3e76c101f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2001-08-20 Sven Wischnowsky <wischnow@zsh.org>
+
+ * 15669: Completion/Base/Completer/_approximate,
+ Src/Zle/compcore.c: undo most of 15650, do that in shell code
+
2001-08-18 Bart Schaefer <schaefer@zsh.org>
* 15617: Src/exec.c: Fix exit status of zsh -fc '! command'.
diff --git a/Completion/Base/Completer/_approximate b/Completion/Base/Completer/_approximate
index 3ed8be730..39518803e 100644
--- a/Completion/Base/Completer/_approximate
+++ b/Completion/Base/Completer/_approximate
@@ -49,15 +49,16 @@ _tags corrections original
if (( ! $+functions[compadd] )); then
compadd() {
+ local ppre="$argv[(I)-p]"
+
[[ ${argv[(I)-[a-zA-Z]#U[a-zA-Z]#]} -eq 0 &&
"${#:-$PREFIX$SUFFIX}" -le _comp_correct ]] && return
- ### This distinction doesn't seem to be needed anymore
- # if [[ "$PREFIX" = \~*/* ]]; then
- # PREFIX="${PREFIX%%/*}/(#a${_comp_correct})${PREFIX#*/}"
- # else
+ if [[ "$PREFIX" = \~* && ( ppre -eq 0 || "$argv[ppre+1]" != \~* ) ]]; then
+ PREFIX="~(#a${_comp_correct})${PREFIX[2,-1]}"
+ else
PREFIX="(#a${_comp_correct})$PREFIX"
- # fi
+ fi
(( $_correct_group && $argv[(I)-*[JV]] )) &&
_correct_expl[_correct_group]=${argv[(R)-*[JV]]}
diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c
index f75c8dc20..d3f720478 100644
--- a/Src/Zle/compcore.c
+++ b/Src/Zle/compcore.c
@@ -1782,23 +1782,21 @@ addmatches(Cadata dat, char **argv)
} else
lsl = 0;
if (dat->aflags & CAF_MATCH) {
- int ml, gfl = 0, tildepat = 0;
+ int ml, gfl = 0;
char *globflag = NULL;
if (comppatmatch && *comppatmatch &&
- lpre[0] == '(' && lpre[1] == '#') {
+ dat->ppre && lpre[0] == '(' && lpre[1] == '#') {
char *p;
for (p = lpre + 2; *p && *p != ')'; p++);
- if (*p == ')' && (dat->ppre || p[1] == '~')) {
+ if (*p == ')') {
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;
@@ -1861,11 +1859,7 @@ addmatches(Cadata dat, char **argv)
int is = (*comppatmatch == '*');
char *tmp = (char *) zhalloc(2 + llpl + llsl + gfl);
- if (tildepat) {
- tmp[0] = '~';
- strcpy(tmp + 1, globflag);
- strcat(tmp, lpre + 1);
- } else if (gfl) {
+ if (gfl) {
strcpy(tmp, globflag);
strcat(tmp, lpre);
} else