mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-10-02 08:51:18 +02:00
more anchor matching fixes (11817)
This commit is contained in:
parent
0526e9b5c7
commit
a95d051826
@ -1,5 +1,7 @@
|
||||
2000-06-08 Sven Wischnowsky <wischnow@zsh.org>
|
||||
|
||||
* 11817: Src/Zle/compmatch.c: more anchor matching fixes
|
||||
|
||||
* 11815: Completion/Core/_expand, Doc/Zsh/compsys.yo: trying to
|
||||
improve _expand; new keep-prefix style, add-space gives more control
|
||||
|
||||
|
@ -535,8 +535,7 @@ match_str(char *l, char *w, Brinfo *bpp, int bc, int *rwlp,
|
||||
}
|
||||
/* Give up if we don't have enough characters for the
|
||||
* line-string and the anchor. */
|
||||
if (ll < llen + alen ||
|
||||
(sfx ? (lw < alen + aol) : (lw < alen || iw < aol)))
|
||||
if (ll < llen + alen || lw < alen)
|
||||
continue;
|
||||
|
||||
if (mp->flags & CMF_LEFT) {
|
||||
@ -561,8 +560,9 @@ match_str(char *l, char *w, Brinfo *bpp, int bc, int *rwlp,
|
||||
if (!pattern_match(ap, l + aoff, NULL, NULL) ||
|
||||
(both &&
|
||||
(!pattern_match(ap, w + aoff, NULL, NULL) ||
|
||||
(aol && !pattern_match(aop, w + aoff - aol,
|
||||
NULL, NULL)) ||
|
||||
(aol && aol <= aoff + iw &&
|
||||
!pattern_match(aop, w + aoff - aol,
|
||||
NULL, NULL)) ||
|
||||
!match_parts(l + aoff, w + aoff, alen, part))))
|
||||
continue;
|
||||
} else if (!both || il || iw)
|
||||
@ -572,19 +572,20 @@ match_str(char *l, char *w, Brinfo *bpp, int bc, int *rwlp,
|
||||
* string matched by the `*'. */
|
||||
if (sfx && (savl = l[-(llen + zoff)]))
|
||||
l[-(llen + zoff)] = '\0';
|
||||
for (t = 0, tp = w, ct = 0,
|
||||
ict = lw - alen + 1 - (sfx ? aol : 0);
|
||||
for (t = 0, tp = w, ct = 0, ict = lw - alen + 1;
|
||||
ict;
|
||||
tp += add, ct++, ict--) {
|
||||
if ((both &&
|
||||
(!ap || !test ||
|
||||
!pattern_match(ap, tp + aoff, NULL, NULL) ||
|
||||
(aol && !pattern_match(aop, tp + aoff - aol,
|
||||
NULL, NULL)))) ||
|
||||
(aol && aol <= aoff + ct + iw &&
|
||||
!pattern_match(aop, tp + aoff - aol,
|
||||
NULL, NULL)))) ||
|
||||
(!both &&
|
||||
pattern_match(ap, tp - moff, NULL, NULL) &&
|
||||
(!aol || pattern_match(aop, tp - moff - aol,
|
||||
NULL, NULL)) &&
|
||||
(!aol || (aol <= iw + ct - moff &&
|
||||
pattern_match(aop, tp - moff - aol,
|
||||
NULL, NULL))) &&
|
||||
(mp->wlen == -1 ||
|
||||
match_parts(l + aoff , tp - moff,
|
||||
alen, part)))) {
|
||||
|
Loading…
Reference in New Issue
Block a user