diff options
| author | Dmitry Antipov | 2012-08-14 08:49:18 +0400 |
|---|---|---|
| committer | Dmitry Antipov | 2012-08-14 08:49:18 +0400 |
| commit | fd318b54074f824376e7766cf127b6a4624f191a (patch) | |
| tree | 147a2831bfca1bbe454842c657dca75b2ad31b1d /src/buffer.c | |
| parent | 41a62dd97860c5154838ee87745fd380b45a4883 (diff) | |
| download | emacs-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.c | 122 |
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 | |||
| 3513 | fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos) | 3511 | fix_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 | ||
| 3728 | DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0, | 3724 | DEFUN ("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); |