aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorDmitry Antipov2012-08-14 08:49:18 +0400
committerDmitry Antipov2012-08-14 08:49:18 +0400
commitfd318b54074f824376e7766cf127b6a4624f191a (patch)
tree147a2831bfca1bbe454842c657dca75b2ad31b1d /src/buffer.c
parent41a62dd97860c5154838ee87745fd380b45a4883 (diff)
downloademacs-fd318b54074f824376e7766cf127b6a4624f191a.tar.gz
emacs-fd318b54074f824376e7766cf127b6a4624f191a.zip
Revert and cleanup some recent overlay changes.
* buffer.h (enum overlay_type): Remove. (buffer_get_overlays, buffer_set_overlays): Likewise. (buffer_set_overlays_before, buffer_set_overlays_after): New function. Adjust users. (unchain_both): Add eassert.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c122
1 files changed, 57 insertions, 65 deletions
diff --git a/src/buffer.c b/src/buffer.c
index ffc9daeb9a7..56d6231f5f8 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -474,10 +474,8 @@ 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 buffer_set_overlays 477 buffer_set_overlays_before (to, copy_overlays (to, from->overlays_before));
478 (to, copy_overlays (to, buffer_get_overlays (from, OV_BEFORE)), OV_BEFORE); 478 buffer_set_overlays_after (to, copy_overlays (to, from->overlays_after));
479 buffer_set_overlays
480 (to, copy_overlays (to, buffer_get_overlays (from, OV_AFTER)), OV_AFTER);
481 479
482 /* Get (a copy of) the alist of Lisp-level local variables of FROM 480 /* Get (a copy of) the alist of Lisp-level local variables of FROM
483 and install that in TO. */ 481 and install that in TO. */
@@ -676,22 +674,22 @@ delete_all_overlays (struct buffer *b)
676{ 674{
677 struct Lisp_Overlay *ov, *next; 675 struct Lisp_Overlay *ov, *next;
678 676
679 for (ov = buffer_get_overlays (b, OV_BEFORE); ov; ov = next) 677 for (ov = b->overlays_before; ov; ov = next)
680 { 678 {
681 drop_overlay (b, ov); 679 drop_overlay (b, ov);
682 next = ov->next; 680 next = ov->next;
683 ov->next = NULL; 681 ov->next = NULL;
684 } 682 }
685 683
686 for (ov = buffer_get_overlays (b, OV_AFTER); ov; ov = next) 684 for (ov = b->overlays_after; ov; ov = next)
687 { 685 {
688 drop_overlay (b, ov); 686 drop_overlay (b, ov);
689 next = ov->next; 687 next = ov->next;
690 ov->next = NULL; 688 ov->next = NULL;
691 } 689 }
692 690
693 buffer_set_overlays (b, NULL, OV_BEFORE); 691 buffer_set_overlays_before (b, NULL);
694 buffer_set_overlays (b, NULL, OV_AFTER); 692 buffer_set_overlays_after (b, NULL);
695} 693}
696 694
697/* Reinitialize everything about a buffer except its name and contents 695/* Reinitialize everything about a buffer except its name and contents
@@ -720,8 +718,8 @@ reset_buffer (register struct buffer *b)
720 b->auto_save_failure_time = 0; 718 b->auto_save_failure_time = 0;
721 BSET (b, auto_save_file_name, Qnil); 719 BSET (b, auto_save_file_name, Qnil);
722 BSET (b, read_only, Qnil); 720 BSET (b, read_only, Qnil);
723 buffer_set_overlays (b, NULL, OV_BEFORE); 721 buffer_set_overlays_before (b, NULL);
724 buffer_set_overlays (b, NULL, OV_AFTER); 722 buffer_set_overlays_after (b, NULL);
725 b->overlay_center = BEG; 723 b->overlay_center = BEG;
726 BSET (b, mark_active, Qnil); 724 BSET (b, mark_active, Qnil);
727 BSET (b, point_before_scroll, Qnil); 725 BSET (b, point_before_scroll, Qnil);
@@ -2608,7 +2606,7 @@ overlays_at (EMACS_INT pos, int extend, Lisp_Object **vec_ptr,
2608 ptrdiff_t prev = BEGV; 2606 ptrdiff_t prev = BEGV;
2609 int inhibit_storing = 0; 2607 int inhibit_storing = 0;
2610 2608
2611 for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) 2609 for (tail = current_buffer->overlays_before; tail; tail = tail->next)
2612 { 2610 {
2613 ptrdiff_t startpos, endpos; 2611 ptrdiff_t startpos, endpos;
2614 2612
@@ -2656,7 +2654,7 @@ overlays_at (EMACS_INT pos, int extend, Lisp_Object **vec_ptr,
2656 next = startpos; 2654 next = startpos;
2657 } 2655 }
2658 2656
2659 for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) 2657 for (tail = current_buffer->overlays_after; tail; tail = tail->next)
2660 { 2658 {
2661 ptrdiff_t startpos, endpos; 2659 ptrdiff_t startpos, endpos;
2662 2660
@@ -2743,7 +2741,7 @@ overlays_in (EMACS_INT beg, EMACS_INT end, int extend,
2743 int inhibit_storing = 0; 2741 int inhibit_storing = 0;
2744 int end_is_Z = end == Z; 2742 int end_is_Z = end == Z;
2745 2743
2746 for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) 2744 for (tail = current_buffer->overlays_before; tail; tail = tail->next)
2747 { 2745 {
2748 ptrdiff_t startpos, endpos; 2746 ptrdiff_t startpos, endpos;
2749 2747
@@ -2790,7 +2788,7 @@ overlays_in (EMACS_INT beg, EMACS_INT end, int extend,
2790 next = startpos; 2788 next = startpos;
2791 } 2789 }
2792 2790
2793 for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) 2791 for (tail = current_buffer->overlays_after; tail; tail = tail->next)
2794 { 2792 {
2795 ptrdiff_t startpos, endpos; 2793 ptrdiff_t startpos, endpos;
2796 2794
@@ -2880,7 +2878,7 @@ overlay_touches_p (ptrdiff_t pos)
2880 Lisp_Object overlay; 2878 Lisp_Object overlay;
2881 struct Lisp_Overlay *tail; 2879 struct Lisp_Overlay *tail;
2882 2880
2883 for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) 2881 for (tail = current_buffer->overlays_before; tail; tail = tail->next)
2884 { 2882 {
2885 ptrdiff_t endpos; 2883 ptrdiff_t endpos;
2886 2884
@@ -2894,7 +2892,7 @@ overlay_touches_p (ptrdiff_t pos)
2894 return 1; 2892 return 1;
2895 } 2893 }
2896 2894
2897 for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) 2895 for (tail = current_buffer->overlays_after; tail; tail = tail->next)
2898 { 2896 {
2899 ptrdiff_t startpos; 2897 ptrdiff_t startpos;
2900 2898
@@ -3095,7 +3093,7 @@ overlay_strings (ptrdiff_t pos, struct window *w, unsigned char **pstr)
3095 3093
3096 overlay_heads.used = overlay_heads.bytes = 0; 3094 overlay_heads.used = overlay_heads.bytes = 0;
3097 overlay_tails.used = overlay_tails.bytes = 0; 3095 overlay_tails.used = overlay_tails.bytes = 0;
3098 for (ov = buffer_get_overlays (NULL, OV_BEFORE); ov; ov = ov->next) 3096 for (ov = current_buffer->overlays_before; ov; ov = ov->next)
3099 { 3097 {
3100 XSETMISC (overlay, ov); 3098 XSETMISC (overlay, ov);
3101 eassert (OVERLAYP (overlay)); 3099 eassert (OVERLAYP (overlay));
@@ -3123,7 +3121,7 @@ overlay_strings (ptrdiff_t pos, struct window *w, unsigned char **pstr)
3123 Foverlay_get (overlay, Qpriority), 3121 Foverlay_get (overlay, Qpriority),
3124 endpos - startpos); 3122 endpos - startpos);
3125 } 3123 }
3126 for (ov = buffer_get_overlays (NULL, OV_AFTER); ov; ov = ov->next) 3124 for (ov = current_buffer->overlays_after; ov; ov = ov->next)
3127 { 3125 {
3128 XSETMISC (overlay, ov); 3126 XSETMISC (overlay, ov);
3129 eassert (OVERLAYP (overlay)); 3127 eassert (OVERLAYP (overlay));
@@ -3221,7 +3219,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3221 But we use it for symmetry and in case that should cease to be true 3219 But we use it for symmetry and in case that should cease to be true
3222 with some future change. */ 3220 with some future change. */
3223 prev = NULL; 3221 prev = NULL;
3224 for (tail = buffer_get_overlays (buf, OV_BEFORE); tail; prev = tail, tail = next) 3222 for (tail = buf->overlays_before; tail; prev = tail, tail = next)
3225 { 3223 {
3226 next = tail->next; 3224 next = tail->next;
3227 XSETMISC (overlay, tail); 3225 XSETMISC (overlay, tail);
@@ -3240,11 +3238,11 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3240 if (prev) 3238 if (prev)
3241 prev->next = next; 3239 prev->next = next;
3242 else 3240 else
3243 buffer_set_overlays (buf, next, OV_BEFORE); 3241 buffer_set_overlays_before (buf, next);
3244 3242
3245 /* Search thru overlays_after for where to put it. */ 3243 /* Search thru overlays_after for where to put it. */
3246 other_prev = NULL; 3244 other_prev = NULL;
3247 for (other = buffer_get_overlays (buf, OV_AFTER); other; 3245 for (other = buf->overlays_after; other;
3248 other_prev = other, other = other->next) 3246 other_prev = other, other = other->next)
3249 { 3247 {
3250 Lisp_Object otherbeg, otheroverlay; 3248 Lisp_Object otherbeg, otheroverlay;
@@ -3262,7 +3260,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3262 if (other_prev) 3260 if (other_prev)
3263 other_prev->next = tail; 3261 other_prev->next = tail;
3264 else 3262 else
3265 buffer_set_overlays (buf, tail, OV_AFTER); 3263 buffer_set_overlays_after (buf, tail);
3266 tail = prev; 3264 tail = prev;
3267 } 3265 }
3268 else 3266 else
@@ -3274,7 +3272,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3274 3272
3275 /* See if anything in overlays_after should be in overlays_before. */ 3273 /* See if anything in overlays_after should be in overlays_before. */
3276 prev = NULL; 3274 prev = NULL;
3277 for (tail = buffer_get_overlays (buf, OV_AFTER); tail; prev = tail, tail = next) 3275 for (tail = buf->overlays_after; tail; prev = tail, tail = next)
3278 { 3276 {
3279 next = tail->next; 3277 next = tail->next;
3280 XSETMISC (overlay, tail); 3278 XSETMISC (overlay, tail);
@@ -3298,11 +3296,11 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3298 if (prev) 3296 if (prev)
3299 prev->next = next; 3297 prev->next = next;
3300 else 3298 else
3301 buffer_set_overlays (buf, next, OV_AFTER); 3299 buffer_set_overlays_after (buf, next);
3302 3300
3303 /* Search thru overlays_before for where to put it. */ 3301 /* Search thru overlays_before for where to put it. */
3304 other_prev = NULL; 3302 other_prev = NULL;
3305 for (other = buffer_get_overlays (buf, OV_BEFORE); other; 3303 for (other = buf->overlays_before; other;
3306 other_prev = other, other = other->next) 3304 other_prev = other, other = other->next)
3307 { 3305 {
3308 Lisp_Object otherend, otheroverlay; 3306 Lisp_Object otherend, otheroverlay;
@@ -3320,7 +3318,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3320 if (other_prev) 3318 if (other_prev)
3321 other_prev->next = tail; 3319 other_prev->next = tail;
3322 else 3320 else
3323 buffer_set_overlays (buf, tail, OV_BEFORE); 3321 buffer_set_overlays_before (buf, tail);
3324 tail = prev; 3322 tail = prev;
3325 } 3323 }
3326 } 3324 }
@@ -3373,7 +3371,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
3373 assigned. */ 3371 assigned. */
3374 struct Lisp_Overlay *beforep = NULL, *afterp = NULL; 3372 struct Lisp_Overlay *beforep = NULL, *afterp = NULL;
3375 /* 'Parent', likewise, indicates a cons cell or 3373 /* 'Parent', likewise, indicates a cons cell or
3376 before or after overlays list, depending 3374 current_buffer->overlays_before or overlays_after, depending
3377 which loop we're in. */ 3375 which loop we're in. */
3378 struct Lisp_Overlay *tail, *parent; 3376 struct Lisp_Overlay *tail, *parent;
3379 ptrdiff_t startpos, endpos; 3377 ptrdiff_t startpos, endpos;
@@ -3385,7 +3383,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
3385 (after_list) if it is, is still uninitialized. So it's not a bug 3383 (after_list) if it is, is still uninitialized. So it's not a bug
3386 that before_list isn't initialized, although it may look 3384 that before_list isn't initialized, although it may look
3387 strange. */ 3385 strange. */
3388 for (parent = NULL, tail = buffer_get_overlays (NULL, OV_BEFORE); tail;) 3386 for (parent = NULL, tail = current_buffer->overlays_before; tail;)
3389 { 3387 {
3390 XSETMISC (overlay, tail); 3388 XSETMISC (overlay, tail);
3391 3389
@@ -3425,7 +3423,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
3425 beforep = tail; 3423 beforep = tail;
3426 } 3424 }
3427 if (!parent) 3425 if (!parent)
3428 buffer_set_overlays (NULL, tail->next, OV_BEFORE); 3426 buffer_set_overlays_before (current_buffer, tail->next);
3429 else 3427 else
3430 parent->next = tail->next; 3428 parent->next = tail->next;
3431 tail = tail->next; 3429 tail = tail->next;
@@ -3433,7 +3431,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
3433 else 3431 else
3434 parent = tail, tail = parent->next; 3432 parent = tail, tail = parent->next;
3435 } 3433 }
3436 for (parent = NULL, tail = buffer_get_overlays (NULL, OV_AFTER); tail;) 3434 for (parent = NULL, tail = current_buffer->overlays_after; tail;)
3437 { 3435 {
3438 XSETMISC (overlay, tail); 3436 XSETMISC (overlay, tail);
3439 3437
@@ -3471,7 +3469,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
3471 beforep = tail; 3469 beforep = tail;
3472 } 3470 }
3473 if (!parent) 3471 if (!parent)
3474 buffer_set_overlays (NULL, tail->next, OV_AFTER); 3472 buffer_set_overlays_after (current_buffer, tail->next);
3475 else 3473 else
3476 parent->next = tail->next; 3474 parent->next = tail->next;
3477 tail = tail->next; 3475 tail = tail->next;
@@ -3484,15 +3482,15 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
3484 and let the recenter function make it sane again. */ 3482 and let the recenter function make it sane again. */
3485 if (beforep) 3483 if (beforep)
3486 { 3484 {
3487 beforep->next = buffer_get_overlays (NULL, OV_BEFORE); 3485 beforep->next = current_buffer->overlays_before;
3488 buffer_set_overlays (NULL, before_list, OV_BEFORE); 3486 buffer_set_overlays_before (current_buffer, before_list);
3489 } 3487 }
3490 recenter_overlay_lists (current_buffer, current_buffer->overlay_center); 3488 recenter_overlay_lists (current_buffer, current_buffer->overlay_center);
3491 3489
3492 if (afterp) 3490 if (afterp)
3493 { 3491 {
3494 afterp->next = buffer_get_overlays (NULL, OV_AFTER); 3492 afterp->next = current_buffer->overlays_after;
3495 buffer_set_overlays (NULL, after_list, OV_AFTER); 3493 buffer_set_overlays_after (current_buffer, after_list);
3496 } 3494 }
3497 recenter_overlay_lists (current_buffer, current_buffer->overlay_center); 3495 recenter_overlay_lists (current_buffer, current_buffer->overlay_center);
3498} 3496}
@@ -3513,8 +3511,7 @@ void
3513fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos) 3511fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos)
3514{ 3512{
3515 /* If parent is nil, replace overlays_before; otherwise, parent->next. */ 3513 /* If parent is nil, replace overlays_before; otherwise, parent->next. */
3516 struct Lisp_Overlay *tail = buffer_get_overlays (bp, OV_BEFORE); 3514 struct Lisp_Overlay *tail = bp->overlays_before, *parent = NULL, *right_pair;
3517 struct Lisp_Overlay *parent = NULL, *right_pair;
3518 Lisp_Object tem; 3515 Lisp_Object tem;
3519 ptrdiff_t end IF_LINT (= 0); 3516 ptrdiff_t end IF_LINT (= 0);
3520 3517
@@ -3569,8 +3566,8 @@ fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos)
3569 and link it into the right place. */ 3566 and link it into the right place. */
3570 if (!right_pair) 3567 if (!right_pair)
3571 { 3568 {
3572 found->next = buffer_get_overlays (bp, OV_BEFORE); 3569 found->next = bp->overlays_before;
3573 buffer_set_overlays (bp, found, OV_BEFORE); 3570 buffer_set_overlays_before (bp, found);
3574 } 3571 }
3575 else 3572 else
3576 { 3573 {
@@ -3646,15 +3643,15 @@ for the rear of the overlay advance when text is inserted there
3646 end = OVERLAY_END (overlay); 3643 end = OVERLAY_END (overlay);
3647 if (OVERLAY_POSITION (end) < b->overlay_center) 3644 if (OVERLAY_POSITION (end) < b->overlay_center)
3648 { 3645 {
3649 if (buffer_get_overlays (b, OV_AFTER)) 3646 if (b->overlays_after)
3650 XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_AFTER); 3647 XOVERLAY (overlay)->next = b->overlays_after;
3651 buffer_set_overlays (b, XOVERLAY (overlay), OV_AFTER); 3648 buffer_set_overlays_after (b, XOVERLAY (overlay));
3652 } 3649 }
3653 else 3650 else
3654 { 3651 {
3655 if (buffer_get_overlays (b, OV_BEFORE)) 3652 if (b->overlays_before)
3656 XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_BEFORE); 3653 XOVERLAY (overlay)->next = b->overlays_before;
3657 buffer_set_overlays (b, XOVERLAY (overlay), OV_BEFORE); 3654 buffer_set_overlays_before (b, XOVERLAY (overlay));
3658 } 3655 }
3659 3656
3660 /* 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. */
@@ -3719,10 +3716,9 @@ unchain_both (struct buffer *b, Lisp_Object overlay)
3719{ 3716{
3720 struct Lisp_Overlay *ov = XOVERLAY (overlay); 3717 struct Lisp_Overlay *ov = XOVERLAY (overlay);
3721 3718
3722 buffer_set_overlays 3719 buffer_set_overlays_before (b, unchain_overlay (b->overlays_before, ov));
3723 (b, unchain_overlay (buffer_get_overlays (b, OV_BEFORE), ov), OV_BEFORE); 3720 buffer_set_overlays_after (b, unchain_overlay (b->overlays_after, ov));
3724 buffer_set_overlays 3721 eassert (XOVERLAY (overlay)->next == NULL);
3725 (b, unchain_overlay (buffer_get_overlays (b, OV_AFTER), ov), OV_AFTER);
3726} 3722}
3727 3723
3728DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0, 3724DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0,
@@ -3776,7 +3772,6 @@ buffer. */)
3776 o_end = OVERLAY_POSITION (OVERLAY_END (overlay)); 3772 o_end = OVERLAY_POSITION (OVERLAY_END (overlay));
3777 3773
3778 unchain_both (ob, overlay); 3774 unchain_both (ob, overlay);
3779 eassert (XOVERLAY (overlay)->next == NULL);
3780 } 3775 }
3781 3776
3782 /* Set the overlay boundaries, which may clip them. */ 3777 /* Set the overlay boundaries, which may clip them. */
@@ -3816,13 +3811,13 @@ buffer. */)
3816 wrong list. */ 3811 wrong list. */
3817 if (n_end < b->overlay_center) 3812 if (n_end < b->overlay_center)
3818 { 3813 {
3819 XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_AFTER); 3814 XOVERLAY (overlay)->next = b->overlays_after;
3820 buffer_set_overlays (b, XOVERLAY (overlay), OV_AFTER); 3815 buffer_set_overlays_after (b, XOVERLAY (overlay));
3821 } 3816 }
3822 else 3817 else
3823 { 3818 {
3824 XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_BEFORE); 3819 XOVERLAY (overlay)->next = b->overlays_before;
3825 buffer_set_overlays (b, XOVERLAY (overlay), OV_BEFORE); 3820 buffer_set_overlays_before (b, XOVERLAY (overlay));
3826 } 3821 }
3827 3822
3828 /* This puts it in the right list, and in the right order. */ 3823 /* This puts it in the right list, and in the right order. */
@@ -3849,8 +3844,6 @@ DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0,
3849 specbind (Qinhibit_quit, Qt); 3844 specbind (Qinhibit_quit, Qt);
3850 3845
3851 unchain_both (b, overlay); 3846 unchain_both (b, overlay);
3852 eassert (XOVERLAY (overlay)->next == NULL);
3853
3854 drop_overlay (b, XOVERLAY (overlay)); 3847 drop_overlay (b, XOVERLAY (overlay));
3855 3848
3856 /* When deleting an overlay with before or after strings, turn off 3849 /* When deleting an overlay with before or after strings, turn off
@@ -4048,13 +4041,12 @@ However, the overlays you get are the real objects that the buffer uses. */)
4048 struct Lisp_Overlay *ol; 4041 struct Lisp_Overlay *ol;
4049 Lisp_Object before = Qnil, after = Qnil, tmp; 4042 Lisp_Object before = Qnil, after = Qnil, tmp;
4050 4043
4051 for (ol = buffer_get_overlays (NULL, OV_BEFORE); ol; ol = ol->next) 4044 for (ol = current_buffer->overlays_before; ol; ol = ol->next)
4052 { 4045 {
4053 XSETMISC (tmp, ol); 4046 XSETMISC (tmp, ol);
4054 before = Fcons (tmp, before); 4047 before = Fcons (tmp, before);
4055 } 4048 }
4056 4049 for (ol = current_buffer->overlays_after; ol; ol = ol->next)
4057 for (ol = buffer_get_overlays (NULL, OV_AFTER); ol; ol = ol->next)
4058 { 4050 {
4059 XSETMISC (tmp, ol); 4051 XSETMISC (tmp, ol);
4060 after = Fcons (tmp, after); 4052 after = Fcons (tmp, after);
@@ -4199,7 +4191,7 @@ report_overlay_modification (Lisp_Object start, Lisp_Object end, int after,
4199 /* We are being called before a change. 4191 /* We are being called before a change.
4200 Scan the overlays to find the functions to call. */ 4192 Scan the overlays to find the functions to call. */
4201 last_overlay_modification_hooks_used = 0; 4193 last_overlay_modification_hooks_used = 0;
4202 for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) 4194 for (tail = current_buffer->overlays_before; tail; tail = tail->next)
4203 { 4195 {
4204 ptrdiff_t startpos, endpos; 4196 ptrdiff_t startpos, endpos;
4205 Lisp_Object ostart, oend; 4197 Lisp_Object ostart, oend;
@@ -4236,7 +4228,7 @@ report_overlay_modification (Lisp_Object start, Lisp_Object end, int after,
4236 } 4228 }
4237 } 4229 }
4238 4230
4239 for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) 4231 for (tail = current_buffer->overlays_after; tail; tail = tail->next)
4240 { 4232 {
4241 ptrdiff_t startpos, endpos; 4233 ptrdiff_t startpos, endpos;
4242 Lisp_Object ostart, oend; 4234 Lisp_Object ostart, oend;
@@ -4328,7 +4320,7 @@ evaporate_overlays (ptrdiff_t pos)
4328 4320
4329 hit_list = Qnil; 4321 hit_list = Qnil;
4330 if (pos <= current_buffer->overlay_center) 4322 if (pos <= current_buffer->overlay_center)
4331 for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next) 4323 for (tail = current_buffer->overlays_before; tail; tail = tail->next)
4332 { 4324 {
4333 ptrdiff_t endpos; 4325 ptrdiff_t endpos;
4334 XSETMISC (overlay, tail); 4326 XSETMISC (overlay, tail);
@@ -4340,7 +4332,7 @@ evaporate_overlays (ptrdiff_t pos)
4340 hit_list = Fcons (overlay, hit_list); 4332 hit_list = Fcons (overlay, hit_list);
4341 } 4333 }
4342 else 4334 else
4343 for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next) 4335 for (tail = current_buffer->overlays_after; tail; tail = tail->next)
4344 { 4336 {
4345 ptrdiff_t startpos; 4337 ptrdiff_t startpos;
4346 XSETMISC (overlay, tail); 4338 XSETMISC (overlay, tail);
@@ -4946,8 +4938,8 @@ init_buffer_once (void)
4946 BSET (&buffer_defaults, mark_active, Qnil); 4938 BSET (&buffer_defaults, mark_active, Qnil);
4947 BSET (&buffer_defaults, file_format, Qnil); 4939 BSET (&buffer_defaults, file_format, Qnil);
4948 BSET (&buffer_defaults, auto_save_file_format, Qt); 4940 BSET (&buffer_defaults, auto_save_file_format, Qt);
4949 buffer_defaults.overlays_before = NULL; 4941 buffer_set_overlays_before (&buffer_defaults, NULL);
4950 buffer_defaults.overlays_after = NULL; 4942 buffer_set_overlays_after (&buffer_defaults, NULL);
4951 buffer_defaults.overlay_center = BEG; 4943 buffer_defaults.overlay_center = BEG;
4952 4944
4953 XSETFASTINT (BVAR (&buffer_defaults, tab_width), 8); 4945 XSETFASTINT (BVAR (&buffer_defaults, tab_width), 8);