From eb41692bc56f22c7587426c4e5fa3c75ea0dfeab Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Mon, 5 Mar 2001 10:48:10 +0000 Subject: fix for matching control, try harder to merge separately completed parts to avoid losing user-typed characters (13565) --- Src/Zle/compmatch.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'Src/Zle/compmatch.c') 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; -- cgit 1.4.1