* buffer.c (Fmove_overlay): If the overlay is changing buffers,

do a thorough redisplay.
This commit is contained in:
Jim Blandy 1993-05-28 06:50:23 +00:00
parent 312b93ee50
commit c82ed7283a

View file

@ -1566,26 +1566,30 @@ buffer.")
b = XBUFFER (buffer);
/* Redisplay the area the overlay has just left, or just enclosed. */
{
Lisp_Object o_beg = OVERLAY_START (overlay);
Lisp_Object o_end = OVERLAY_END (overlay);
int change_beg, change_end;
/* If the overlay has changed buffers, do a thorough redisplay. */
if (! EQ (buffer, XMARKER (OVERLAY_START (overlay))->buffer))
windows_or_buffers_changed = 1;
else
/* Redisplay the area the overlay has just left, or just enclosed. */
{
Lisp_Object o_beg = OVERLAY_START (overlay);
Lisp_Object o_end = OVERLAY_END (overlay);
int change_beg, change_end;
o_beg = OVERLAY_POSITION (o_beg);
o_end = OVERLAY_POSITION (o_end);
o_beg = OVERLAY_POSITION (o_beg);
o_end = OVERLAY_POSITION (o_end);
if (XINT (o_beg) == XINT (beg))
redisplay_region (b, XINT (o_end), XINT (end));
else if (XINT (o_end) == XINT (end))
redisplay_region (b, XINT (o_beg), XINT (beg));
else
{
if (XINT (beg) < XINT (o_beg)) o_beg = beg;
if (XINT (end) > XINT (o_end)) o_end = end;
redisplay_region (b, XINT (o_beg), XINT (o_end));
}
}
if (XINT (o_beg) == XINT (beg))
redisplay_region (b, XINT (o_end), XINT (end));
else if (XINT (o_end) == XINT (end))
redisplay_region (b, XINT (o_beg), XINT (beg));
else
{
if (XINT (beg) < XINT (o_beg)) o_beg = beg;
if (XINT (end) > XINT (o_end)) o_end = end;
redisplay_region (b, XINT (o_beg), XINT (o_end));
}
}
b->overlays_before = Fdelq (overlay, b->overlays_before);
b->overlays_after = Fdelq (overlay, b->overlays_after);