diff options
| author | Dmitry Antipov | 2012-08-08 18:47:11 +0400 |
|---|---|---|
| committer | Dmitry Antipov | 2012-08-08 18:47:11 +0400 |
| commit | 4cb3e6b38ac6c50279474db0e87a52253af52f59 (patch) | |
| tree | 3a4af4b3aa9291bea206fd76f729a2bda4c93c58 /src | |
| parent | d9f9b465414c4c345574d9f179808380751c070e (diff) | |
| download | emacs-4cb3e6b38ac6c50279474db0e87a52253af52f59.tar.gz emacs-4cb3e6b38ac6c50279474db0e87a52253af52f59.zip | |
Inline functions to examine and change buffer overlays.
* buffer.c (unchain_both): New function.
* buffer.h (buffer_get_overlays, buffer_set_overlays):
(buffer_has_overlays): New function.
(enum overlay_type): New enum.
* alloc.c, buffer.c, editfns.c, fileio.c, indent.c:
* insdel.c, intervals.c, print.c, xdisp.c: Adjust users.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/alloc.c | 4 | ||||
| -rw-r--r-- | src/buffer.c | 132 | ||||
| -rw-r--r-- | src/buffer.h | 46 | ||||
| -rw-r--r-- | src/editfns.c | 4 | ||||
| -rw-r--r-- | src/fileio.c | 4 | ||||
| -rw-r--r-- | src/indent.c | 3 | ||||
| -rw-r--r-- | src/insdel.c | 7 | ||||
| -rw-r--r-- | src/intervals.c | 3 | ||||
| -rw-r--r-- | src/print.c | 4 | ||||
| -rw-r--r-- | src/xdisp.c | 4 |
11 files changed, 144 insertions, 77 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 9c6d4b4458d..3717b4400b2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,15 @@ | |||
| 1 | 2012-08-08 Dmitry Antipov <dmantipov@yandex.ru> | 1 | 2012-08-08 Dmitry Antipov <dmantipov@yandex.ru> |
| 2 | 2 | ||
| 3 | Inline functions to examine and change buffer overlays. | ||
| 4 | * buffer.c (unchain_both): New function. | ||
| 5 | * buffer.h (buffer_get_overlays, buffer_set_overlays): | ||
| 6 | (buffer_has_overlays): New function. | ||
| 7 | (enum overlay_type): New enum. | ||
| 8 | * alloc.c, buffer.c, editfns.c, fileio.c, indent.c: | ||
| 9 | * insdel.c, intervals.c, print.c, xdisp.c: Adjust users. | ||
| 10 | |||
| 11 | 2012-08-08 Dmitry Antipov <dmantipov@yandex.ru> | ||
| 12 | |||
| 3 | Inline functions to examine and change buffer intervals. | 13 | Inline functions to examine and change buffer intervals. |
| 4 | * alloc.c (mark_interval_tree): Remove. | 14 | * alloc.c (mark_interval_tree): Remove. |
| 5 | (MARK_INTERVAL_TREE): Simplify. | 15 | (MARK_INTERVAL_TREE): Simplify. |
diff --git a/src/alloc.c b/src/alloc.c index c93fcb564c7..e84be987033 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -5831,8 +5831,8 @@ mark_buffer (struct buffer *buffer) | |||
| 5831 | a special way just before the sweep phase, and after stripping | 5831 | a special way just before the sweep phase, and after stripping |
| 5832 | some of its elements that are not needed any more. */ | 5832 | some of its elements that are not needed any more. */ |
| 5833 | 5833 | ||
| 5834 | mark_overlay (buffer->overlays_before); | 5834 | mark_overlay (buffer_get_overlays (buffer, OV_BEFORE)); |
| 5835 | mark_overlay (buffer->overlays_after); | 5835 | mark_overlay (buffer_get_overlays (buffer, OV_AFTER)); |
| 5836 | 5836 | ||
| 5837 | /* If this is an indirect buffer, mark its base buffer. */ | 5837 | /* If this is an indirect buffer, mark its base buffer. */ |
| 5838 | if (buffer->base_buffer && !VECTOR_MARKED_P (buffer->base_buffer)) | 5838 | if (buffer->base_buffer && !VECTOR_MARKED_P (buffer->base_buffer)) |
diff --git a/src/buffer.c b/src/buffer.c index fab7330b195..6b68f34bb15 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -474,8 +474,10 @@ clone_per_buffer_values (struct buffer *from, struct buffer *to) | |||
| 474 | 474 | ||
| 475 | memcpy (to->local_flags, from->local_flags, sizeof to->local_flags); | 475 | memcpy (to->local_flags, from->local_flags, sizeof to->local_flags); |
| 476 | 476 | ||
| 477 | to->overlays_before = copy_overlays (to, from->overlays_before); | 477 | buffer_set_overlays |
| 478 | to->overlays_after = copy_overlays (to, from->overlays_after); | 478 | (to, copy_overlays (to, buffer_get_overlays (from, OV_BEFORE)), OV_BEFORE); |
| 479 | buffer_set_overlays | ||
| 480 | (to, copy_overlays (to, buffer_get_overlays (from, OV_AFTER)), OV_AFTER); | ||
| 479 | 481 | ||
| 480 | /* Get (a copy of) the alist of Lisp-level local variables of FROM | 482 | /* Get (a copy of) the alist of Lisp-level local variables of FROM |
| 481 | and install that in TO. */ | 483 | and install that in TO. */ |
| @@ -674,21 +676,22 @@ delete_all_overlays (struct buffer *b) | |||
| 674 | { | 676 | { |
| 675 | struct Lisp_Overlay *ov, *next; | 677 | struct Lisp_Overlay *ov, *next; |
| 676 | 678 | ||
| 677 | for (ov = b->overlays_before; ov; ov = next) | 679 | for (ov = buffer_get_overlays (b, OV_BEFORE); ov; ov = next) |
| 678 | { | 680 | { |
| 679 | drop_overlay (b, ov); | 681 | drop_overlay (b, ov); |
| 680 | next = ov->next; | 682 | next = ov->next; |
| 681 | ov->next = NULL; | 683 | ov->next = NULL; |
| 682 | } | 684 | } |
| 683 | 685 | ||
| 684 | for (ov = b->overlays_after; ov; ov = next) | 686 | for (ov = buffer_get_overlays (b, OV_AFTER); ov; ov = next) |
| 685 | { | 687 | { |
| 686 | drop_overlay (b, ov); | 688 | drop_overlay (b, ov); |
| 687 | next = ov->next; | 689 | next = ov->next; |
| 688 | ov->next = NULL; | 690 | ov->next = NULL; |
| 689 | } | 691 | } |
| 690 | 692 | ||
| 691 | b->overlays_before = b->overlays_after = NULL; | 693 | buffer_set_overlays (b, NULL, OV_BEFORE); |
| 694 | buffer_set_overlays (b, NULL, OV_AFTER); | ||
| 692 | } | 695 | } |
| 693 | 696 | ||
| 694 | /* Reinitialize everything about a buffer except its name and contents | 697 | /* Reinitialize everything about a buffer except its name and contents |
| @@ -716,8 +719,8 @@ reset_buffer (register struct buffer *b) | |||
| 716 | b->auto_save_failure_time = 0; | 719 | b->auto_save_failure_time = 0; |
| 717 | BVAR (b, auto_save_file_name) = Qnil; | 720 | BVAR (b, auto_save_file_name) = Qnil; |
| 718 | BVAR (b, read_only) = Qnil; | 721 | BVAR (b, read_only) = Qnil; |
| 719 | b->overlays_before = NULL; | 722 | buffer_set_overlays (b, NULL, OV_BEFORE); |
| 720 | b->overlays_after = NULL; | 723 | buffer_set_overlays (b, NULL, OV_AFTER); |
| 721 | b->overlay_center = BEG; | 724 | b->overlay_center = BEG; |
| 722 | BVAR (b, mark_active) = Qnil; | 725 | BVAR (b, mark_active) = Qnil; |
| 723 | BVAR (b, point_before_scroll) = Qnil; | 726 | BVAR (b, point_before_scroll) = Qnil; |
| @@ -2602,7 +2605,7 @@ overlays_at (EMACS_INT pos, int extend, Lisp_Object **vec_ptr, | |||
| 2602 | ptrdiff_t prev = BEGV; | 2605 | ptrdiff_t prev = BEGV; |
| 2603 | int inhibit_storing = 0; | 2606 | int inhibit_storing = 0; |
| 2604 | 2607 | ||
| 2605 | for (tail = current_buffer->overlays_before; tail; tail = tail->next) | 2608 | for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) |
| 2606 | { | 2609 | { |
| 2607 | ptrdiff_t startpos, endpos; | 2610 | ptrdiff_t startpos, endpos; |
| 2608 | 2611 | ||
| @@ -2650,7 +2653,7 @@ overlays_at (EMACS_INT pos, int extend, Lisp_Object **vec_ptr, | |||
| 2650 | next = startpos; | 2653 | next = startpos; |
| 2651 | } | 2654 | } |
| 2652 | 2655 | ||
| 2653 | for (tail = current_buffer->overlays_after; tail; tail = tail->next) | 2656 | for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) |
| 2654 | { | 2657 | { |
| 2655 | ptrdiff_t startpos, endpos; | 2658 | ptrdiff_t startpos, endpos; |
| 2656 | 2659 | ||
| @@ -2737,7 +2740,7 @@ overlays_in (EMACS_INT beg, EMACS_INT end, int extend, | |||
| 2737 | int inhibit_storing = 0; | 2740 | int inhibit_storing = 0; |
| 2738 | int end_is_Z = end == Z; | 2741 | int end_is_Z = end == Z; |
| 2739 | 2742 | ||
| 2740 | for (tail = current_buffer->overlays_before; tail; tail = tail->next) | 2743 | for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) |
| 2741 | { | 2744 | { |
| 2742 | ptrdiff_t startpos, endpos; | 2745 | ptrdiff_t startpos, endpos; |
| 2743 | 2746 | ||
| @@ -2784,7 +2787,7 @@ overlays_in (EMACS_INT beg, EMACS_INT end, int extend, | |||
| 2784 | next = startpos; | 2787 | next = startpos; |
| 2785 | } | 2788 | } |
| 2786 | 2789 | ||
| 2787 | for (tail = current_buffer->overlays_after; tail; tail = tail->next) | 2790 | for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) |
| 2788 | { | 2791 | { |
| 2789 | ptrdiff_t startpos, endpos; | 2792 | ptrdiff_t startpos, endpos; |
| 2790 | 2793 | ||
| @@ -2874,7 +2877,7 @@ overlay_touches_p (ptrdiff_t pos) | |||
| 2874 | Lisp_Object overlay; | 2877 | Lisp_Object overlay; |
| 2875 | struct Lisp_Overlay *tail; | 2878 | struct Lisp_Overlay *tail; |
| 2876 | 2879 | ||
| 2877 | for (tail = current_buffer->overlays_before; tail; tail = tail->next) | 2880 | for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) |
| 2878 | { | 2881 | { |
| 2879 | ptrdiff_t endpos; | 2882 | ptrdiff_t endpos; |
| 2880 | 2883 | ||
| @@ -2888,7 +2891,7 @@ overlay_touches_p (ptrdiff_t pos) | |||
| 2888 | return 1; | 2891 | return 1; |
| 2889 | } | 2892 | } |
| 2890 | 2893 | ||
| 2891 | for (tail = current_buffer->overlays_after; tail; tail = tail->next) | 2894 | for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) |
| 2892 | { | 2895 | { |
| 2893 | ptrdiff_t startpos; | 2896 | ptrdiff_t startpos; |
| 2894 | 2897 | ||
| @@ -3089,7 +3092,7 @@ overlay_strings (ptrdiff_t pos, struct window *w, unsigned char **pstr) | |||
| 3089 | 3092 | ||
| 3090 | overlay_heads.used = overlay_heads.bytes = 0; | 3093 | overlay_heads.used = overlay_heads.bytes = 0; |
| 3091 | overlay_tails.used = overlay_tails.bytes = 0; | 3094 | overlay_tails.used = overlay_tails.bytes = 0; |
| 3092 | for (ov = current_buffer->overlays_before; ov; ov = ov->next) | 3095 | for (ov = buffer_get_overlays (NULL, OV_BEFORE); ov; ov = ov->next) |
| 3093 | { | 3096 | { |
| 3094 | XSETMISC (overlay, ov); | 3097 | XSETMISC (overlay, ov); |
| 3095 | eassert (OVERLAYP (overlay)); | 3098 | eassert (OVERLAYP (overlay)); |
| @@ -3117,7 +3120,7 @@ overlay_strings (ptrdiff_t pos, struct window *w, unsigned char **pstr) | |||
| 3117 | Foverlay_get (overlay, Qpriority), | 3120 | Foverlay_get (overlay, Qpriority), |
| 3118 | endpos - startpos); | 3121 | endpos - startpos); |
| 3119 | } | 3122 | } |
| 3120 | for (ov = current_buffer->overlays_after; ov; ov = ov->next) | 3123 | for (ov = buffer_get_overlays (NULL, OV_AFTER); ov; ov = ov->next) |
| 3121 | { | 3124 | { |
| 3122 | XSETMISC (overlay, ov); | 3125 | XSETMISC (overlay, ov); |
| 3123 | eassert (OVERLAYP (overlay)); | 3126 | eassert (OVERLAYP (overlay)); |
| @@ -3215,7 +3218,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos) | |||
| 3215 | But we use it for symmetry and in case that should cease to be true | 3218 | But we use it for symmetry and in case that should cease to be true |
| 3216 | with some future change. */ | 3219 | with some future change. */ |
| 3217 | prev = NULL; | 3220 | prev = NULL; |
| 3218 | for (tail = buf->overlays_before; tail; prev = tail, tail = next) | 3221 | for (tail = buffer_get_overlays (buf, OV_BEFORE); tail; prev = tail, tail = next) |
| 3219 | { | 3222 | { |
| 3220 | next = tail->next; | 3223 | next = tail->next; |
| 3221 | XSETMISC (overlay, tail); | 3224 | XSETMISC (overlay, tail); |
| @@ -3234,11 +3237,11 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos) | |||
| 3234 | if (prev) | 3237 | if (prev) |
| 3235 | prev->next = next; | 3238 | prev->next = next; |
| 3236 | else | 3239 | else |
| 3237 | buf->overlays_before = next; | 3240 | buffer_set_overlays (buf, next, OV_BEFORE); |
| 3238 | 3241 | ||
| 3239 | /* Search thru overlays_after for where to put it. */ | 3242 | /* Search thru overlays_after for where to put it. */ |
| 3240 | other_prev = NULL; | 3243 | other_prev = NULL; |
| 3241 | for (other = buf->overlays_after; other; | 3244 | for (other = buffer_get_overlays (buf, OV_AFTER); other; |
| 3242 | other_prev = other, other = other->next) | 3245 | other_prev = other, other = other->next) |
| 3243 | { | 3246 | { |
| 3244 | Lisp_Object otherbeg, otheroverlay; | 3247 | Lisp_Object otherbeg, otheroverlay; |
| @@ -3256,7 +3259,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos) | |||
| 3256 | if (other_prev) | 3259 | if (other_prev) |
| 3257 | other_prev->next = tail; | 3260 | other_prev->next = tail; |
| 3258 | else | 3261 | else |
| 3259 | buf->overlays_after = tail; | 3262 | buffer_set_overlays (buf, tail, OV_AFTER); |
| 3260 | tail = prev; | 3263 | tail = prev; |
| 3261 | } | 3264 | } |
| 3262 | else | 3265 | else |
| @@ -3268,7 +3271,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos) | |||
| 3268 | 3271 | ||
| 3269 | /* See if anything in overlays_after should be in overlays_before. */ | 3272 | /* See if anything in overlays_after should be in overlays_before. */ |
| 3270 | prev = NULL; | 3273 | prev = NULL; |
| 3271 | for (tail = buf->overlays_after; tail; prev = tail, tail = next) | 3274 | for (tail = buffer_get_overlays (buf, OV_AFTER); tail; prev = tail, tail = next) |
| 3272 | { | 3275 | { |
| 3273 | next = tail->next; | 3276 | next = tail->next; |
| 3274 | XSETMISC (overlay, tail); | 3277 | XSETMISC (overlay, tail); |
| @@ -3292,11 +3295,11 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos) | |||
| 3292 | if (prev) | 3295 | if (prev) |
| 3293 | prev->next = next; | 3296 | prev->next = next; |
| 3294 | else | 3297 | else |
| 3295 | buf->overlays_after = next; | 3298 | buffer_set_overlays (buf, next, OV_AFTER); |
| 3296 | 3299 | ||
| 3297 | /* Search thru overlays_before for where to put it. */ | 3300 | /* Search thru overlays_before for where to put it. */ |
| 3298 | other_prev = NULL; | 3301 | other_prev = NULL; |
| 3299 | for (other = buf->overlays_before; other; | 3302 | for (other = buffer_get_overlays (buf, OV_BEFORE); other; |
| 3300 | other_prev = other, other = other->next) | 3303 | other_prev = other, other = other->next) |
| 3301 | { | 3304 | { |
| 3302 | Lisp_Object otherend, otheroverlay; | 3305 | Lisp_Object otherend, otheroverlay; |
| @@ -3314,7 +3317,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos) | |||
| 3314 | if (other_prev) | 3317 | if (other_prev) |
| 3315 | other_prev->next = tail; | 3318 | other_prev->next = tail; |
| 3316 | else | 3319 | else |
| 3317 | buf->overlays_before = tail; | 3320 | buffer_set_overlays (buf, tail, OV_BEFORE); |
| 3318 | tail = prev; | 3321 | tail = prev; |
| 3319 | } | 3322 | } |
| 3320 | } | 3323 | } |
| @@ -3367,7 +3370,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end) | |||
| 3367 | assigned. */ | 3370 | assigned. */ |
| 3368 | struct Lisp_Overlay *beforep = NULL, *afterp = NULL; | 3371 | struct Lisp_Overlay *beforep = NULL, *afterp = NULL; |
| 3369 | /* 'Parent', likewise, indicates a cons cell or | 3372 | /* 'Parent', likewise, indicates a cons cell or |
| 3370 | current_buffer->overlays_before or overlays_after, depending | 3373 | before or after overlays list, depending |
| 3371 | which loop we're in. */ | 3374 | which loop we're in. */ |
| 3372 | struct Lisp_Overlay *tail, *parent; | 3375 | struct Lisp_Overlay *tail, *parent; |
| 3373 | ptrdiff_t startpos, endpos; | 3376 | ptrdiff_t startpos, endpos; |
| @@ -3379,7 +3382,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end) | |||
| 3379 | (after_list) if it is, is still uninitialized. So it's not a bug | 3382 | (after_list) if it is, is still uninitialized. So it's not a bug |
| 3380 | that before_list isn't initialized, although it may look | 3383 | that before_list isn't initialized, although it may look |
| 3381 | strange. */ | 3384 | strange. */ |
| 3382 | for (parent = NULL, tail = current_buffer->overlays_before; tail;) | 3385 | for (parent = NULL, tail = buffer_get_overlays (NULL, OV_BEFORE); tail;) |
| 3383 | { | 3386 | { |
| 3384 | XSETMISC (overlay, tail); | 3387 | XSETMISC (overlay, tail); |
| 3385 | 3388 | ||
| @@ -3419,7 +3422,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end) | |||
| 3419 | beforep = tail; | 3422 | beforep = tail; |
| 3420 | } | 3423 | } |
| 3421 | if (!parent) | 3424 | if (!parent) |
| 3422 | current_buffer->overlays_before = tail->next; | 3425 | buffer_set_overlays (NULL, tail->next, OV_BEFORE); |
| 3423 | else | 3426 | else |
| 3424 | parent->next = tail->next; | 3427 | parent->next = tail->next; |
| 3425 | tail = tail->next; | 3428 | tail = tail->next; |
| @@ -3427,7 +3430,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end) | |||
| 3427 | else | 3430 | else |
| 3428 | parent = tail, tail = parent->next; | 3431 | parent = tail, tail = parent->next; |
| 3429 | } | 3432 | } |
| 3430 | for (parent = NULL, tail = current_buffer->overlays_after; tail;) | 3433 | for (parent = NULL, tail = buffer_get_overlays (NULL, OV_AFTER); tail;) |
| 3431 | { | 3434 | { |
| 3432 | XSETMISC (overlay, tail); | 3435 | XSETMISC (overlay, tail); |
| 3433 | 3436 | ||
| @@ -3465,7 +3468,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end) | |||
| 3465 | beforep = tail; | 3468 | beforep = tail; |
| 3466 | } | 3469 | } |
| 3467 | if (!parent) | 3470 | if (!parent) |
| 3468 | current_buffer->overlays_after = tail->next; | 3471 | buffer_set_overlays (NULL, tail->next, OV_AFTER); |
| 3469 | else | 3472 | else |
| 3470 | parent->next = tail->next; | 3473 | parent->next = tail->next; |
| 3471 | tail = tail->next; | 3474 | tail = tail->next; |
| @@ -3478,15 +3481,15 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end) | |||
| 3478 | and let the recenter function make it sane again. */ | 3481 | and let the recenter function make it sane again. */ |
| 3479 | if (beforep) | 3482 | if (beforep) |
| 3480 | { | 3483 | { |
| 3481 | beforep->next = current_buffer->overlays_before; | 3484 | beforep->next = buffer_get_overlays (NULL, OV_BEFORE); |
| 3482 | current_buffer->overlays_before = before_list; | 3485 | buffer_set_overlays (NULL, before_list, OV_BEFORE); |
| 3483 | } | 3486 | } |
| 3484 | recenter_overlay_lists (current_buffer, current_buffer->overlay_center); | 3487 | recenter_overlay_lists (current_buffer, current_buffer->overlay_center); |
| 3485 | 3488 | ||
| 3486 | if (afterp) | 3489 | if (afterp) |
| 3487 | { | 3490 | { |
| 3488 | afterp->next = current_buffer->overlays_after; | 3491 | afterp->next = buffer_get_overlays (NULL, OV_AFTER); |
| 3489 | current_buffer->overlays_after = after_list; | 3492 | buffer_set_overlays (NULL, after_list, OV_AFTER); |
| 3490 | } | 3493 | } |
| 3491 | recenter_overlay_lists (current_buffer, current_buffer->overlay_center); | 3494 | recenter_overlay_lists (current_buffer, current_buffer->overlay_center); |
| 3492 | } | 3495 | } |
| @@ -3507,7 +3510,8 @@ void | |||
| 3507 | fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos) | 3510 | fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos) |
| 3508 | { | 3511 | { |
| 3509 | /* If parent is nil, replace overlays_before; otherwise, parent->next. */ | 3512 | /* If parent is nil, replace overlays_before; otherwise, parent->next. */ |
| 3510 | struct Lisp_Overlay *tail = bp->overlays_before, *parent = NULL, *right_pair; | 3513 | struct Lisp_Overlay *tail = buffer_get_overlays (bp, OV_BEFORE); |
| 3514 | struct Lisp_Overlay *parent = NULL, *right_pair; | ||
| 3511 | Lisp_Object tem; | 3515 | Lisp_Object tem; |
| 3512 | ptrdiff_t end IF_LINT (= 0); | 3516 | ptrdiff_t end IF_LINT (= 0); |
| 3513 | 3517 | ||
| @@ -3562,8 +3566,8 @@ fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos) | |||
| 3562 | and link it into the right place. */ | 3566 | and link it into the right place. */ |
| 3563 | if (!right_pair) | 3567 | if (!right_pair) |
| 3564 | { | 3568 | { |
| 3565 | found->next = bp->overlays_before; | 3569 | found->next = buffer_get_overlays (bp, OV_BEFORE); |
| 3566 | bp->overlays_before = found; | 3570 | buffer_set_overlays (bp, found, OV_BEFORE); |
| 3567 | } | 3571 | } |
| 3568 | else | 3572 | else |
| 3569 | { | 3573 | { |
| @@ -3639,15 +3643,15 @@ for the rear of the overlay advance when text is inserted there | |||
| 3639 | end = OVERLAY_END (overlay); | 3643 | end = OVERLAY_END (overlay); |
| 3640 | if (OVERLAY_POSITION (end) < b->overlay_center) | 3644 | if (OVERLAY_POSITION (end) < b->overlay_center) |
| 3641 | { | 3645 | { |
| 3642 | if (b->overlays_after) | 3646 | if (buffer_get_overlays (b, OV_AFTER)) |
| 3643 | XOVERLAY (overlay)->next = b->overlays_after; | 3647 | XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_AFTER); |
| 3644 | b->overlays_after = XOVERLAY (overlay); | 3648 | buffer_set_overlays (b, XOVERLAY (overlay), OV_AFTER); |
| 3645 | } | 3649 | } |
| 3646 | else | 3650 | else |
| 3647 | { | 3651 | { |
| 3648 | if (b->overlays_before) | 3652 | if (buffer_get_overlays (b, OV_BEFORE)) |
| 3649 | XOVERLAY (overlay)->next = b->overlays_before; | 3653 | XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_BEFORE); |
| 3650 | b->overlays_before = XOVERLAY (overlay); | 3654 | buffer_set_overlays (b, XOVERLAY (overlay), OV_BEFORE); |
| 3651 | } | 3655 | } |
| 3652 | 3656 | ||
| 3653 | /* This puts it in the right list, and in the right order. */ | 3657 | /* This puts it in the right list, and in the right order. */ |
| @@ -3705,6 +3709,19 @@ unchain_overlay (struct Lisp_Overlay *list, struct Lisp_Overlay *overlay) | |||
| 3705 | return list; | 3709 | return list; |
| 3706 | } | 3710 | } |
| 3707 | 3711 | ||
| 3712 | /* Remove OVERLAY from both overlay lists of B. */ | ||
| 3713 | |||
| 3714 | static void | ||
| 3715 | unchain_both (struct buffer *b, Lisp_Object overlay) | ||
| 3716 | { | ||
| 3717 | struct Lisp_Overlay *ov = XOVERLAY (overlay); | ||
| 3718 | |||
| 3719 | buffer_set_overlays | ||
| 3720 | (b, unchain_overlay (buffer_get_overlays (b, OV_BEFORE), ov), OV_BEFORE); | ||
| 3721 | buffer_set_overlays | ||
| 3722 | (b, unchain_overlay (buffer_get_overlays (b, OV_AFTER), ov), OV_AFTER); | ||
| 3723 | } | ||
| 3724 | |||
| 3708 | DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0, | 3725 | DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0, |
| 3709 | doc: /* Set the endpoints of OVERLAY to BEG and END in BUFFER. | 3726 | doc: /* Set the endpoints of OVERLAY to BEG and END in BUFFER. |
| 3710 | If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now. | 3727 | If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now. |
| @@ -3755,10 +3772,7 @@ buffer. */) | |||
| 3755 | o_beg = OVERLAY_POSITION (OVERLAY_START (overlay)); | 3772 | o_beg = OVERLAY_POSITION (OVERLAY_START (overlay)); |
| 3756 | o_end = OVERLAY_POSITION (OVERLAY_END (overlay)); | 3773 | o_end = OVERLAY_POSITION (OVERLAY_END (overlay)); |
| 3757 | 3774 | ||
| 3758 | ob->overlays_before = | 3775 | unchain_both (ob, overlay); |
| 3759 | unchain_overlay (ob->overlays_before, XOVERLAY (overlay)); | ||
| 3760 | ob->overlays_after = | ||
| 3761 | unchain_overlay (ob->overlays_after, XOVERLAY (overlay)); | ||
| 3762 | eassert (XOVERLAY (overlay)->next == NULL); | 3776 | eassert (XOVERLAY (overlay)->next == NULL); |
| 3763 | } | 3777 | } |
| 3764 | 3778 | ||
| @@ -3799,13 +3813,13 @@ buffer. */) | |||
| 3799 | wrong list. */ | 3813 | wrong list. */ |
| 3800 | if (n_end < b->overlay_center) | 3814 | if (n_end < b->overlay_center) |
| 3801 | { | 3815 | { |
| 3802 | XOVERLAY (overlay)->next = b->overlays_after; | 3816 | XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_AFTER); |
| 3803 | b->overlays_after = XOVERLAY (overlay); | 3817 | buffer_set_overlays (b, XOVERLAY (overlay), OV_AFTER); |
| 3804 | } | 3818 | } |
| 3805 | else | 3819 | else |
| 3806 | { | 3820 | { |
| 3807 | XOVERLAY (overlay)->next = b->overlays_before; | 3821 | XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_BEFORE); |
| 3808 | b->overlays_before = XOVERLAY (overlay); | 3822 | buffer_set_overlays (b, XOVERLAY (overlay), OV_BEFORE); |
| 3809 | } | 3823 | } |
| 3810 | 3824 | ||
| 3811 | /* This puts it in the right list, and in the right order. */ | 3825 | /* This puts it in the right list, and in the right order. */ |
| @@ -3831,10 +3845,7 @@ DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0, | |||
| 3831 | b = XBUFFER (buffer); | 3845 | b = XBUFFER (buffer); |
| 3832 | specbind (Qinhibit_quit, Qt); | 3846 | specbind (Qinhibit_quit, Qt); |
| 3833 | 3847 | ||
| 3834 | b->overlays_before | 3848 | unchain_both (b, overlay); |
| 3835 | = unchain_overlay (b->overlays_before, XOVERLAY (overlay)); | ||
| 3836 | b->overlays_after | ||
| 3837 | = unchain_overlay (b->overlays_after, XOVERLAY (overlay)); | ||
| 3838 | eassert (XOVERLAY (overlay)->next == NULL); | 3849 | eassert (XOVERLAY (overlay)->next == NULL); |
| 3839 | 3850 | ||
| 3840 | drop_overlay (b, XOVERLAY (overlay)); | 3851 | drop_overlay (b, XOVERLAY (overlay)); |
| @@ -4033,16 +4044,19 @@ However, the overlays you get are the real objects that the buffer uses. */) | |||
| 4033 | { | 4044 | { |
| 4034 | struct Lisp_Overlay *ol; | 4045 | struct Lisp_Overlay *ol; |
| 4035 | Lisp_Object before = Qnil, after = Qnil, tmp; | 4046 | Lisp_Object before = Qnil, after = Qnil, tmp; |
| 4036 | for (ol = current_buffer->overlays_before; ol; ol = ol->next) | 4047 | |
| 4048 | for (ol = buffer_get_overlays (NULL, OV_BEFORE); ol; ol = ol->next) | ||
| 4037 | { | 4049 | { |
| 4038 | XSETMISC (tmp, ol); | 4050 | XSETMISC (tmp, ol); |
| 4039 | before = Fcons (tmp, before); | 4051 | before = Fcons (tmp, before); |
| 4040 | } | 4052 | } |
| 4041 | for (ol = current_buffer->overlays_after; ol; ol = ol->next) | 4053 | |
| 4054 | for (ol = buffer_get_overlays (NULL, OV_AFTER); ol; ol = ol->next) | ||
| 4042 | { | 4055 | { |
| 4043 | XSETMISC (tmp, ol); | 4056 | XSETMISC (tmp, ol); |
| 4044 | after = Fcons (tmp, after); | 4057 | after = Fcons (tmp, after); |
| 4045 | } | 4058 | } |
| 4059 | |||
| 4046 | return Fcons (Fnreverse (before), Fnreverse (after)); | 4060 | return Fcons (Fnreverse (before), Fnreverse (after)); |
| 4047 | } | 4061 | } |
| 4048 | 4062 | ||
| @@ -4182,7 +4196,7 @@ report_overlay_modification (Lisp_Object start, Lisp_Object end, int after, | |||
| 4182 | /* We are being called before a change. | 4196 | /* We are being called before a change. |
| 4183 | Scan the overlays to find the functions to call. */ | 4197 | Scan the overlays to find the functions to call. */ |
| 4184 | last_overlay_modification_hooks_used = 0; | 4198 | last_overlay_modification_hooks_used = 0; |
| 4185 | for (tail = current_buffer->overlays_before; tail; tail = tail->next) | 4199 | for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) |
| 4186 | { | 4200 | { |
| 4187 | ptrdiff_t startpos, endpos; | 4201 | ptrdiff_t startpos, endpos; |
| 4188 | Lisp_Object ostart, oend; | 4202 | Lisp_Object ostart, oend; |
| @@ -4219,7 +4233,7 @@ report_overlay_modification (Lisp_Object start, Lisp_Object end, int after, | |||
| 4219 | } | 4233 | } |
| 4220 | } | 4234 | } |
| 4221 | 4235 | ||
| 4222 | for (tail = current_buffer->overlays_after; tail; tail = tail->next) | 4236 | for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) |
| 4223 | { | 4237 | { |
| 4224 | ptrdiff_t startpos, endpos; | 4238 | ptrdiff_t startpos, endpos; |
| 4225 | Lisp_Object ostart, oend; | 4239 | Lisp_Object ostart, oend; |
| @@ -4311,7 +4325,7 @@ evaporate_overlays (ptrdiff_t pos) | |||
| 4311 | 4325 | ||
| 4312 | hit_list = Qnil; | 4326 | hit_list = Qnil; |
| 4313 | if (pos <= current_buffer->overlay_center) | 4327 | if (pos <= current_buffer->overlay_center) |
| 4314 | for (tail = current_buffer->overlays_before; tail; tail = tail->next) | 4328 | for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) |
| 4315 | { | 4329 | { |
| 4316 | ptrdiff_t endpos; | 4330 | ptrdiff_t endpos; |
| 4317 | XSETMISC (overlay, tail); | 4331 | XSETMISC (overlay, tail); |
| @@ -4323,7 +4337,7 @@ evaporate_overlays (ptrdiff_t pos) | |||
| 4323 | hit_list = Fcons (overlay, hit_list); | 4337 | hit_list = Fcons (overlay, hit_list); |
| 4324 | } | 4338 | } |
| 4325 | else | 4339 | else |
| 4326 | for (tail = current_buffer->overlays_after; tail; tail = tail->next) | 4340 | for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) |
| 4327 | { | 4341 | { |
| 4328 | ptrdiff_t startpos; | 4342 | ptrdiff_t startpos; |
| 4329 | XSETMISC (overlay, tail); | 4343 | XSETMISC (overlay, tail); |
diff --git a/src/buffer.h b/src/buffer.h index 986df8e6d32..a52ca7193e4 100644 --- a/src/buffer.h +++ b/src/buffer.h | |||
| @@ -945,6 +945,52 @@ extern void mmap_set_vars (int); | |||
| 945 | } \ | 945 | } \ |
| 946 | } while (0) | 946 | } while (0) |
| 947 | 947 | ||
| 948 | enum overlay_type | ||
| 949 | { | ||
| 950 | OV_BEFORE, | ||
| 951 | OV_AFTER | ||
| 952 | }; | ||
| 953 | |||
| 954 | /* Get overlay list of type T and belonging to B. */ | ||
| 955 | |||
| 956 | BUFFER_INLINE struct Lisp_Overlay * | ||
| 957 | buffer_get_overlays (struct buffer *b, enum overlay_type t) | ||
| 958 | { | ||
| 959 | if (!b) | ||
| 960 | b = current_buffer; | ||
| 961 | if (t == OV_BEFORE) | ||
| 962 | return b->overlays_before; | ||
| 963 | else if (t == OV_AFTER) | ||
| 964 | return b->overlays_after; | ||
| 965 | else | ||
| 966 | abort (); | ||
| 967 | } | ||
| 968 | |||
| 969 | /* Set overlay list of type T as belonging to B. */ | ||
| 970 | |||
| 971 | BUFFER_INLINE void | ||
| 972 | buffer_set_overlays (struct buffer *b, struct Lisp_Overlay *o, | ||
| 973 | enum overlay_type t) | ||
| 974 | { | ||
| 975 | if (!b) | ||
| 976 | b = current_buffer; | ||
| 977 | if (t == OV_BEFORE) | ||
| 978 | b->overlays_before = o; | ||
| 979 | else if (t == OV_AFTER) | ||
| 980 | b->overlays_after = o; | ||
| 981 | else | ||
| 982 | abort (); | ||
| 983 | } | ||
| 984 | |||
| 985 | /* Non-zero if current buffer has overlays. */ | ||
| 986 | |||
| 987 | BUFFER_INLINE int | ||
| 988 | buffer_has_overlays (void) | ||
| 989 | { | ||
| 990 | return buffer_get_overlays (current_buffer, OV_BEFORE) | ||
| 991 | || buffer_get_overlays (current_buffer, OV_AFTER); | ||
| 992 | } | ||
| 993 | |||
| 948 | extern Lisp_Object Qbefore_change_functions; | 994 | extern Lisp_Object Qbefore_change_functions; |
| 949 | extern Lisp_Object Qafter_change_functions; | 995 | extern Lisp_Object Qafter_change_functions; |
| 950 | extern Lisp_Object Qfirst_change_hook; | 996 | extern Lisp_Object Qfirst_change_hook; |
diff --git a/src/editfns.c b/src/editfns.c index aca34482fb2..246e51cb0d5 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -310,7 +310,7 @@ overlays_around (EMACS_INT pos, Lisp_Object *vec, ptrdiff_t len) | |||
| 310 | ptrdiff_t startpos, endpos; | 310 | ptrdiff_t startpos, endpos; |
| 311 | ptrdiff_t idx = 0; | 311 | ptrdiff_t idx = 0; |
| 312 | 312 | ||
| 313 | for (tail = current_buffer->overlays_before; tail; tail = tail->next) | 313 | for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) |
| 314 | { | 314 | { |
| 315 | XSETMISC (overlay, tail); | 315 | XSETMISC (overlay, tail); |
| 316 | 316 | ||
| @@ -329,7 +329,7 @@ overlays_around (EMACS_INT pos, Lisp_Object *vec, ptrdiff_t len) | |||
| 329 | } | 329 | } |
| 330 | } | 330 | } |
| 331 | 331 | ||
| 332 | for (tail = current_buffer->overlays_after; tail; tail = tail->next) | 332 | for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) |
| 333 | { | 333 | { |
| 334 | XSETMISC (overlay, tail); | 334 | XSETMISC (overlay, tail); |
| 335 | 335 | ||
diff --git a/src/fileio.c b/src/fileio.c index 9fe7437669c..886f9b9b103 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -3490,8 +3490,8 @@ variable `last-coding-system-used' to the coding system actually used. */) | |||
| 3490 | BVAR (buf, read_only) = Qnil; | 3490 | BVAR (buf, read_only) = Qnil; |
| 3491 | BVAR (buf, filename) = Qnil; | 3491 | BVAR (buf, filename) = Qnil; |
| 3492 | BVAR (buf, undo_list) = Qt; | 3492 | BVAR (buf, undo_list) = Qt; |
| 3493 | eassert (buf->overlays_before == NULL); | 3493 | eassert (buffer_get_overlays (buf, OV_BEFORE) == NULL); |
| 3494 | eassert (buf->overlays_after == NULL); | 3494 | eassert (buffer_get_overlays (buf, OV_AFTER) == NULL); |
| 3495 | 3495 | ||
| 3496 | set_buffer_internal (buf); | 3496 | set_buffer_internal (buf); |
| 3497 | Ferase_buffer (); | 3497 | Ferase_buffer (); |
diff --git a/src/indent.c b/src/indent.c index 6b7e79fb7a5..597f05da990 100644 --- a/src/indent.c +++ b/src/indent.c | |||
| @@ -337,8 +337,7 @@ current_column (void) | |||
| 337 | /* If the buffer has overlays, text properties, | 337 | /* If the buffer has overlays, text properties, |
| 338 | or multibyte characters, use a more general algorithm. */ | 338 | or multibyte characters, use a more general algorithm. */ |
| 339 | if (buffer_get_intervals (current_buffer) | 339 | if (buffer_get_intervals (current_buffer) |
| 340 | || current_buffer->overlays_before | 340 | || buffer_has_overlays () |
| 341 | || current_buffer->overlays_after | ||
| 342 | || Z != Z_BYTE) | 341 | || Z != Z_BYTE) |
| 343 | return current_column_1 (); | 342 | return current_column_1 (); |
| 344 | 343 | ||
diff --git a/src/insdel.c b/src/insdel.c index ec0d3b31f70..f058ffc2bda 100644 --- a/src/insdel.c +++ b/src/insdel.c | |||
| @@ -1993,7 +1993,7 @@ signal_before_change (ptrdiff_t start_int, ptrdiff_t end_int, | |||
| 1993 | XSETCDR (rvoe_arg, Qt); | 1993 | XSETCDR (rvoe_arg, Qt); |
| 1994 | } | 1994 | } |
| 1995 | 1995 | ||
| 1996 | if (current_buffer->overlays_before || current_buffer->overlays_after) | 1996 | if (buffer_has_overlays ()) |
| 1997 | { | 1997 | { |
| 1998 | PRESERVE_VALUE; | 1998 | PRESERVE_VALUE; |
| 1999 | report_overlay_modification (FETCH_START, FETCH_END, 0, | 1999 | report_overlay_modification (FETCH_START, FETCH_END, 0, |
| @@ -2029,8 +2029,7 @@ signal_after_change (ptrdiff_t charpos, ptrdiff_t lendel, ptrdiff_t lenins) | |||
| 2029 | just record the args that we were going to use. */ | 2029 | just record the args that we were going to use. */ |
| 2030 | if (! NILP (Vcombine_after_change_calls) | 2030 | if (! NILP (Vcombine_after_change_calls) |
| 2031 | && NILP (Vbefore_change_functions) | 2031 | && NILP (Vbefore_change_functions) |
| 2032 | && !current_buffer->overlays_before | 2032 | && !buffer_has_overlays ()) |
| 2033 | && !current_buffer->overlays_after) | ||
| 2034 | { | 2033 | { |
| 2035 | Lisp_Object elt; | 2034 | Lisp_Object elt; |
| 2036 | 2035 | ||
| @@ -2072,7 +2071,7 @@ signal_after_change (ptrdiff_t charpos, ptrdiff_t lendel, ptrdiff_t lenins) | |||
| 2072 | XSETCDR (rvoe_arg, Qt); | 2071 | XSETCDR (rvoe_arg, Qt); |
| 2073 | } | 2072 | } |
| 2074 | 2073 | ||
| 2075 | if (current_buffer->overlays_before || current_buffer->overlays_after) | 2074 | if (buffer_has_overlays ()) |
| 2076 | report_overlay_modification (make_number (charpos), | 2075 | report_overlay_modification (make_number (charpos), |
| 2077 | make_number (charpos + lenins), | 2076 | make_number (charpos + lenins), |
| 2078 | 1, | 2077 | 1, |
diff --git a/src/intervals.c b/src/intervals.c index e9c3929670e..02ffe7ad90d 100644 --- a/src/intervals.c +++ b/src/intervals.c | |||
| @@ -1870,8 +1870,7 @@ set_point_both (ptrdiff_t charpos, ptrdiff_t bytepos) | |||
| 1870 | whether or not there are intervals in the buffer. */ | 1870 | whether or not there are intervals in the buffer. */ |
| 1871 | eassert (charpos <= ZV && charpos >= BEGV); | 1871 | eassert (charpos <= ZV && charpos >= BEGV); |
| 1872 | 1872 | ||
| 1873 | have_overlays = (current_buffer->overlays_before | 1873 | have_overlays = buffer_has_overlays (); |
| 1874 | || current_buffer->overlays_after); | ||
| 1875 | 1874 | ||
| 1876 | /* If we have no text properties and overlays, | 1875 | /* If we have no text properties and overlays, |
| 1877 | then we can do it quickly. */ | 1876 | then we can do it quickly. */ |
diff --git a/src/print.c b/src/print.c index 8c6d1eabc18..718e6a96329 100644 --- a/src/print.c +++ b/src/print.c | |||
| @@ -498,8 +498,8 @@ temp_output_buffer_setup (const char *bufname) | |||
| 498 | BVAR (current_buffer, read_only) = Qnil; | 498 | BVAR (current_buffer, read_only) = Qnil; |
| 499 | BVAR (current_buffer, filename) = Qnil; | 499 | BVAR (current_buffer, filename) = Qnil; |
| 500 | BVAR (current_buffer, undo_list) = Qt; | 500 | BVAR (current_buffer, undo_list) = Qt; |
| 501 | eassert (current_buffer->overlays_before == NULL); | 501 | eassert (buffer_get_overlays (NULL, OV_BEFORE) == NULL); |
| 502 | eassert (current_buffer->overlays_after == NULL); | 502 | eassert (buffer_get_overlays (NULL, OV_AFTER) == NULL); |
| 503 | BVAR (current_buffer, enable_multibyte_characters) | 503 | BVAR (current_buffer, enable_multibyte_characters) |
| 504 | = BVAR (&buffer_defaults, enable_multibyte_characters); | 504 | = BVAR (&buffer_defaults, enable_multibyte_characters); |
| 505 | specbind (Qinhibit_read_only, Qt); | 505 | specbind (Qinhibit_read_only, Qt); |
diff --git a/src/xdisp.c b/src/xdisp.c index a2fc4f61669..39a6067278f 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -5445,7 +5445,7 @@ load_overlay_strings (struct it *it, ptrdiff_t charpos) | |||
| 5445 | while (0) | 5445 | while (0) |
| 5446 | 5446 | ||
| 5447 | /* Process overlay before the overlay center. */ | 5447 | /* Process overlay before the overlay center. */ |
| 5448 | for (ov = current_buffer->overlays_before; ov; ov = ov->next) | 5448 | for (ov = buffer_get_overlays (NULL, OV_BEFORE); ov; ov = ov->next) |
| 5449 | { | 5449 | { |
| 5450 | XSETMISC (overlay, ov); | 5450 | XSETMISC (overlay, ov); |
| 5451 | eassert (OVERLAYP (overlay)); | 5451 | eassert (OVERLAYP (overlay)); |
| @@ -5485,7 +5485,7 @@ load_overlay_strings (struct it *it, ptrdiff_t charpos) | |||
| 5485 | } | 5485 | } |
| 5486 | 5486 | ||
| 5487 | /* Process overlays after the overlay center. */ | 5487 | /* Process overlays after the overlay center. */ |
| 5488 | for (ov = current_buffer->overlays_after; ov; ov = ov->next) | 5488 | for (ov = buffer_get_overlays (NULL, OV_AFTER); ov; ov = ov->next) |
| 5489 | { | 5489 | { |
| 5490 | XSETMISC (overlay, ov); | 5490 | XSETMISC (overlay, ov); |
| 5491 | eassert (OVERLAYP (overlay)); | 5491 | eassert (OVERLAYP (overlay)); |