summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/Zle/compmatch.c26
-rw-r--r--Src/Zle/compresult.c4
2 files changed, 26 insertions, 4 deletions
diff --git a/Src/Zle/compmatch.c b/Src/Zle/compmatch.c
index 0bd8e82f3..45220a298 100644
--- a/Src/Zle/compmatch.c
+++ b/Src/Zle/compmatch.c
@@ -2001,8 +2001,7 @@ join_clines(Cline o, Cline n)
else
oo = to;
o = to;
- }
- if (tn) {
+
diff = sub_join(o, n, tn, 0);
o->flags |= CLF_MISS;
@@ -2064,6 +2063,29 @@ join_clines(Cline o, Cline n)
}
continue;
} else {
+ for (tn = n; tn; tn = tn->next)
+ if ((tn->flags & CLF_NEW) ==
+ (o->flags & CLF_NEW) &&
+ cmp_anchors(tn, o, 1)) break;
+
+ if (tn) {
+ if ((diff = sub_join(o, n, tn, 0))) {
+ if (po) {
+ po->flags |= CLF_MISS;
+ po->max += diff;
+ }
+ else {
+ o->flags |= CLF_MISS;
+ o->max += diff;
+ }
+ }
+ n = tn;
+ po = o;
+ o = o->next;
+ pn = n;
+ n = n->next;
+ continue;
+ }
if (o->flags & CLF_SUF)
break;
diff --git a/Src/Zle/compresult.c b/Src/Zle/compresult.c
index b2c240188..9b85948f9 100644
--- a/Src/Zle/compresult.c
+++ b/Src/Zle/compresult.c
@@ -253,7 +253,7 @@ cline_str(Cline l, int ins, int *csp, LinkList posl)
opos = npos;
addlinknode(posl, (void *) ((long) npos));
}
- if (((pmax < (l->max - l->min) || (pma && l->max != l->min)) &&
+ if (((pmax <= (l->max - l->min) || (pma && l->max != l->min)) &&
(!pmm || (l->flags & CLF_MATCHED))) ||
((l->flags & CLF_MATCHED) && !pmm)) {
pm = cs; pmax = l->max - l->min; pmm = l->flags & CLF_MATCHED;
@@ -307,7 +307,7 @@ cline_str(Cline l, int ins, int *csp, LinkList posl)
opos = npos;
addlinknode(posl, (void *) ((long) npos));
}
- if (((smax < (l->min - l->max) || (sma && l->max != l->min)) &&
+ if (((smax <= (l->min - l->max) || (sma && l->max != l->min)) &&
(!smm || (l->flags & CLF_MATCHED))) ||
((l->flags & CLF_MATCHED) && !smm)) {
sm = cs; smax = l->min - l->max; smm = l->flags & CLF_MATCHED;