mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-11-01 18:30:55 +01:00
fix for partial word completion with empty parts and common suffix (10774)
This commit is contained in:
parent
5c53fb9500
commit
8c474bbcd4
2 changed files with 53 additions and 18 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2000-04-17 Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
|
||||
|
||||
* 10774: Src/Zle/compmatch.c: fix for partial word completion with
|
||||
empty parts and common suffix
|
||||
|
||||
2000-04-16 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
|
||||
|
||||
* 10771: Etc/MACHINES: successful compilation on OpenBSD, from
|
||||
|
|
|
|||
|
|
@ -1767,7 +1767,7 @@ join_clines(Cline o, Cline n)
|
|||
free_cline(o);
|
||||
x = o;
|
||||
o = tn;
|
||||
if (po && cmp_anchors(x, po, 0)) {
|
||||
if (po && po->prefix && cmp_anchors(x, po, 0)) {
|
||||
po->flags |= CLF_MISS;
|
||||
po->max += diff;
|
||||
} else {
|
||||
|
|
@ -1784,7 +1784,7 @@ join_clines(Cline o, Cline n)
|
|||
if (tn && cmp_anchors(o, tn, 0)) {
|
||||
diff = sub_join(o, n, tn, 0);
|
||||
|
||||
if (po && cmp_anchors(n, pn, 0)) {
|
||||
if (po && po->prefix && cmp_anchors(n, pn, 0)) {
|
||||
po->flags |= CLF_MISS;
|
||||
po->max += diff;
|
||||
} else {
|
||||
|
|
@ -1850,7 +1850,7 @@ join_clines(Cline o, Cline n)
|
|||
if (tn) {
|
||||
diff = sub_join(o, n, tn, 0);
|
||||
|
||||
if (po && cmp_anchors(n, pn, 0)) {
|
||||
if (po && po->prefix && cmp_anchors(n, pn, 0)) {
|
||||
po->flags |= CLF_MISS;
|
||||
po->max += diff;
|
||||
} else {
|
||||
|
|
@ -1864,19 +1864,21 @@ join_clines(Cline o, Cline n)
|
|||
n = n->next;
|
||||
continue;
|
||||
} else {
|
||||
for (t = o; (tn = t->next) && !cmp_anchors(n, tn, 1);
|
||||
t = tn);
|
||||
Cline to;
|
||||
|
||||
if (tn) {
|
||||
diff = sub_join(n, o, tn, 1);
|
||||
for (t = o; (to = t->next) && !cmp_anchors(n, to, 1);
|
||||
t = to);
|
||||
|
||||
if (to) {
|
||||
diff = sub_join(n, o, to, 1);
|
||||
|
||||
if (po)
|
||||
po->next = tn;
|
||||
po->next = to;
|
||||
else
|
||||
oo = tn;
|
||||
oo = to;
|
||||
x = o;
|
||||
o = tn;
|
||||
if (po && cmp_anchors(x, po, 0)) {
|
||||
o = to;
|
||||
if (po && po->prefix && cmp_anchors(x, po, 0)) {
|
||||
po->flags |= CLF_MISS;
|
||||
po->max += diff;
|
||||
} else {
|
||||
|
|
@ -1885,14 +1887,42 @@ join_clines(Cline o, Cline n)
|
|||
}
|
||||
continue;
|
||||
} else {
|
||||
if (o->flags & CLF_SUF)
|
||||
break;
|
||||
Cline tt = NULL;
|
||||
|
||||
o->word = o->line = o->orig = NULL;
|
||||
o->wlen = 0;
|
||||
free_cline(o->next);
|
||||
o->next = NULL;
|
||||
o->flags |= CLF_MISS;
|
||||
for (t = n; (tn = t->next); t = tn) {
|
||||
for (tt = o;
|
||||
(to = tt->next) &&
|
||||
!cmp_anchors(tn, to, 1); tt = to);
|
||||
if (tt)
|
||||
break;
|
||||
}
|
||||
if (tt) {
|
||||
diff = sub_join(n, o, to, 1);
|
||||
|
||||
if (po)
|
||||
po->next = to;
|
||||
else
|
||||
oo = to;
|
||||
x = o;
|
||||
o = to;
|
||||
if (po && po->prefix && cmp_anchors(x, po, 0)) {
|
||||
po->flags |= CLF_MISS;
|
||||
po->max += diff;
|
||||
} else {
|
||||
o->flags |= CLF_MISS;
|
||||
o->max += diff;
|
||||
}
|
||||
continue;
|
||||
} else {
|
||||
if (o->flags & CLF_SUF)
|
||||
break;
|
||||
|
||||
o->word = o->line = o->orig = NULL;
|
||||
o->wlen = 0;
|
||||
free_cline(o->next);
|
||||
o->next = NULL;
|
||||
o->flags |= CLF_MISS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue