Mercurial > emacs
diff src/buffer.c @ 3204:a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
do a thorough redisplay.
| author | Jim Blandy <jimb@redhat.com> |
|---|---|
| date | Fri, 28 May 1993 06:50:23 +0000 |
| parents | 5c96dfc52433 |
| children | bc4beddaf2c7 |
line wrap: on
line diff
--- a/src/buffer.c Fri May 28 06:44:48 1993 +0000 +++ b/src/buffer.c Fri May 28 06:50:23 1993 +0000 @@ -1566,26 +1566,30 @@ 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; - - o_beg = OVERLAY_POSITION (o_beg); - o_end = OVERLAY_POSITION (o_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; - 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)); - } - } + 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)); + } + } b->overlays_before = Fdelq (overlay, b->overlays_before); b->overlays_after = Fdelq (overlay, b->overlays_after);
