aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c71
1 files changed, 42 insertions, 29 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 56d6231f5f8..75377abb758 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -360,7 +360,7 @@ even if it is dead. The return value is never nil. */)
360 BUF_CHARS_MODIFF (b) = 1; 360 BUF_CHARS_MODIFF (b) = 1;
361 BUF_OVERLAY_MODIFF (b) = 1; 361 BUF_OVERLAY_MODIFF (b) = 1;
362 BUF_SAVE_MODIFF (b) = 1; 362 BUF_SAVE_MODIFF (b) = 1;
363 buffer_set_intervals (b, NULL); 363 set_buffer_intervals (b, NULL);
364 BUF_UNCHANGED_MODIFIED (b) = 1; 364 BUF_UNCHANGED_MODIFIED (b) = 1;
365 BUF_OVERLAY_UNCHANGED_MODIFIED (b) = 1; 365 BUF_OVERLAY_UNCHANGED_MODIFIED (b) = 1;
366 BUF_END_UNCHANGED (b) = 0; 366 BUF_END_UNCHANGED (b) = 0;
@@ -384,7 +384,7 @@ even if it is dead. The return value is never nil. */)
384 BSET (b, zv_marker, Qnil); 384 BSET (b, zv_marker, Qnil);
385 385
386 name = Fcopy_sequence (buffer_or_name); 386 name = Fcopy_sequence (buffer_or_name);
387 string_set_intervals (name, NULL); 387 set_string_intervals (name, NULL);
388 BSET (b, name, name); 388 BSET (b, name, name);
389 389
390 BSET (b, undo_list, (SREF (name, 0) != ' ') ? Qnil : Qt); 390 BSET (b, undo_list, (SREF (name, 0) != ' ') ? Qnil : Qt);
@@ -439,6 +439,19 @@ copy_overlays (struct buffer *b, struct Lisp_Overlay *list)
439 return result; 439 return result;
440} 440}
441 441
442/* Set an appropriate overlay of B. */
443
444static inline void
445set_buffer_overlays_before (struct buffer *b, struct Lisp_Overlay *o)
446{
447 b->overlays_before = o;
448}
449
450static inline void
451set_buffer_overlays_after (struct buffer *b, struct Lisp_Overlay *o)
452{
453 b->overlays_after = o;
454}
442 455
443/* Clone per-buffer values of buffer FROM. 456/* Clone per-buffer values of buffer FROM.
444 457
@@ -474,8 +487,8 @@ clone_per_buffer_values (struct buffer *from, struct buffer *to)
474 487
475 memcpy (to->local_flags, from->local_flags, sizeof to->local_flags); 488 memcpy (to->local_flags, from->local_flags, sizeof to->local_flags);
476 489
477 buffer_set_overlays_before (to, copy_overlays (to, from->overlays_before)); 490 set_buffer_overlays_before (to, copy_overlays (to, from->overlays_before));
478 buffer_set_overlays_after (to, copy_overlays (to, from->overlays_after)); 491 set_buffer_overlays_after (to, copy_overlays (to, from->overlays_after));
479 492
480 /* Get (a copy of) the alist of Lisp-level local variables of FROM 493 /* Get (a copy of) the alist of Lisp-level local variables of FROM
481 and install that in TO. */ 494 and install that in TO. */
@@ -589,7 +602,7 @@ CLONE nil means the indirect buffer's state is reset to default values. */)
589 all_buffers = b; 602 all_buffers = b;
590 603
591 name = Fcopy_sequence (name); 604 name = Fcopy_sequence (name);
592 string_set_intervals (name, NULL); 605 set_string_intervals (name, NULL);
593 BSET (b, name, name); 606 BSET (b, name, name);
594 607
595 reset_buffer (b); 608 reset_buffer (b);
@@ -688,8 +701,8 @@ delete_all_overlays (struct buffer *b)
688 ov->next = NULL; 701 ov->next = NULL;
689 } 702 }
690 703
691 buffer_set_overlays_before (b, NULL); 704 set_buffer_overlays_before (b, NULL);
692 buffer_set_overlays_after (b, NULL); 705 set_buffer_overlays_after (b, NULL);
693} 706}
694 707
695/* Reinitialize everything about a buffer except its name and contents 708/* Reinitialize everything about a buffer except its name and contents
@@ -718,8 +731,8 @@ reset_buffer (register struct buffer *b)
718 b->auto_save_failure_time = 0; 731 b->auto_save_failure_time = 0;
719 BSET (b, auto_save_file_name, Qnil); 732 BSET (b, auto_save_file_name, Qnil);
720 BSET (b, read_only, Qnil); 733 BSET (b, read_only, Qnil);
721 buffer_set_overlays_before (b, NULL); 734 set_buffer_overlays_before (b, NULL);
722 buffer_set_overlays_after (b, NULL); 735 set_buffer_overlays_after (b, NULL);
723 b->overlay_center = BEG; 736 b->overlay_center = BEG;
724 BSET (b, mark_active, Qnil); 737 BSET (b, mark_active, Qnil);
725 BSET (b, point_before_scroll, Qnil); 738 BSET (b, point_before_scroll, Qnil);
@@ -1691,7 +1704,7 @@ cleaning up all windows currently displaying the buffer to be killed. */)
1691 m = next; 1704 m = next;
1692 } 1705 }
1693 BUF_MARKERS (b) = NULL; 1706 BUF_MARKERS (b) = NULL;
1694 buffer_set_intervals (b, NULL); 1707 set_buffer_intervals (b, NULL);
1695 1708
1696 /* Perhaps we should explicitly free the interval tree here... */ 1709 /* Perhaps we should explicitly free the interval tree here... */
1697 } 1710 }
@@ -3238,7 +3251,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3238 if (prev) 3251 if (prev)
3239 prev->next = next; 3252 prev->next = next;
3240 else 3253 else
3241 buffer_set_overlays_before (buf, next); 3254 set_buffer_overlays_before (buf, next);
3242 3255
3243 /* Search thru overlays_after for where to put it. */ 3256 /* Search thru overlays_after for where to put it. */
3244 other_prev = NULL; 3257 other_prev = NULL;
@@ -3260,7 +3273,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3260 if (other_prev) 3273 if (other_prev)
3261 other_prev->next = tail; 3274 other_prev->next = tail;
3262 else 3275 else
3263 buffer_set_overlays_after (buf, tail); 3276 set_buffer_overlays_after (buf, tail);
3264 tail = prev; 3277 tail = prev;
3265 } 3278 }
3266 else 3279 else
@@ -3296,7 +3309,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3296 if (prev) 3309 if (prev)
3297 prev->next = next; 3310 prev->next = next;
3298 else 3311 else
3299 buffer_set_overlays_after (buf, next); 3312 set_buffer_overlays_after (buf, next);
3300 3313
3301 /* Search thru overlays_before for where to put it. */ 3314 /* Search thru overlays_before for where to put it. */
3302 other_prev = NULL; 3315 other_prev = NULL;
@@ -3318,7 +3331,7 @@ recenter_overlay_lists (struct buffer *buf, ptrdiff_t pos)
3318 if (other_prev) 3331 if (other_prev)
3319 other_prev->next = tail; 3332 other_prev->next = tail;
3320 else 3333 else
3321 buffer_set_overlays_before (buf, tail); 3334 set_buffer_overlays_before (buf, tail);
3322 tail = prev; 3335 tail = prev;
3323 } 3336 }
3324 } 3337 }
@@ -3423,7 +3436,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
3423 beforep = tail; 3436 beforep = tail;
3424 } 3437 }
3425 if (!parent) 3438 if (!parent)
3426 buffer_set_overlays_before (current_buffer, tail->next); 3439 set_buffer_overlays_before (current_buffer, tail->next);
3427 else 3440 else
3428 parent->next = tail->next; 3441 parent->next = tail->next;
3429 tail = tail->next; 3442 tail = tail->next;
@@ -3469,7 +3482,7 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
3469 beforep = tail; 3482 beforep = tail;
3470 } 3483 }
3471 if (!parent) 3484 if (!parent)
3472 buffer_set_overlays_after (current_buffer, tail->next); 3485 set_buffer_overlays_after (current_buffer, tail->next);
3473 else 3486 else
3474 parent->next = tail->next; 3487 parent->next = tail->next;
3475 tail = tail->next; 3488 tail = tail->next;
@@ -3483,14 +3496,14 @@ fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
3483 if (beforep) 3496 if (beforep)
3484 { 3497 {
3485 beforep->next = current_buffer->overlays_before; 3498 beforep->next = current_buffer->overlays_before;
3486 buffer_set_overlays_before (current_buffer, before_list); 3499 set_buffer_overlays_before (current_buffer, before_list);
3487 } 3500 }
3488 recenter_overlay_lists (current_buffer, current_buffer->overlay_center); 3501 recenter_overlay_lists (current_buffer, current_buffer->overlay_center);
3489 3502
3490 if (afterp) 3503 if (afterp)
3491 { 3504 {
3492 afterp->next = current_buffer->overlays_after; 3505 afterp->next = current_buffer->overlays_after;
3493 buffer_set_overlays_after (current_buffer, after_list); 3506 set_buffer_overlays_after (current_buffer, after_list);
3494 } 3507 }
3495 recenter_overlay_lists (current_buffer, current_buffer->overlay_center); 3508 recenter_overlay_lists (current_buffer, current_buffer->overlay_center);
3496} 3509}
@@ -3567,7 +3580,7 @@ fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos)
3567 if (!right_pair) 3580 if (!right_pair)
3568 { 3581 {
3569 found->next = bp->overlays_before; 3582 found->next = bp->overlays_before;
3570 buffer_set_overlays_before (bp, found); 3583 set_buffer_overlays_before (bp, found);
3571 } 3584 }
3572 else 3585 else
3573 { 3586 {
@@ -3645,13 +3658,13 @@ for the rear of the overlay advance when text is inserted there
3645 { 3658 {
3646 if (b->overlays_after) 3659 if (b->overlays_after)
3647 XOVERLAY (overlay)->next = b->overlays_after; 3660 XOVERLAY (overlay)->next = b->overlays_after;
3648 buffer_set_overlays_after (b, XOVERLAY (overlay)); 3661 set_buffer_overlays_after (b, XOVERLAY (overlay));
3649 } 3662 }
3650 else 3663 else
3651 { 3664 {
3652 if (b->overlays_before) 3665 if (b->overlays_before)
3653 XOVERLAY (overlay)->next = b->overlays_before; 3666 XOVERLAY (overlay)->next = b->overlays_before;
3654 buffer_set_overlays_before (b, XOVERLAY (overlay)); 3667 set_buffer_overlays_before (b, XOVERLAY (overlay));
3655 } 3668 }
3656 3669
3657 /* This puts it in the right list, and in the right order. */ 3670 /* This puts it in the right list, and in the right order. */
@@ -3716,8 +3729,8 @@ unchain_both (struct buffer *b, Lisp_Object overlay)
3716{ 3729{
3717 struct Lisp_Overlay *ov = XOVERLAY (overlay); 3730 struct Lisp_Overlay *ov = XOVERLAY (overlay);
3718 3731
3719 buffer_set_overlays_before (b, unchain_overlay (b->overlays_before, ov)); 3732 set_buffer_overlays_before (b, unchain_overlay (b->overlays_before, ov));
3720 buffer_set_overlays_after (b, unchain_overlay (b->overlays_after, ov)); 3733 set_buffer_overlays_after (b, unchain_overlay (b->overlays_after, ov));
3721 eassert (XOVERLAY (overlay)->next == NULL); 3734 eassert (XOVERLAY (overlay)->next == NULL);
3722} 3735}
3723 3736
@@ -3812,12 +3825,12 @@ buffer. */)
3812 if (n_end < b->overlay_center) 3825 if (n_end < b->overlay_center)
3813 { 3826 {
3814 XOVERLAY (overlay)->next = b->overlays_after; 3827 XOVERLAY (overlay)->next = b->overlays_after;
3815 buffer_set_overlays_after (b, XOVERLAY (overlay)); 3828 set_buffer_overlays_after (b, XOVERLAY (overlay));
3816 } 3829 }
3817 else 3830 else
3818 { 3831 {
3819 XOVERLAY (overlay)->next = b->overlays_before; 3832 XOVERLAY (overlay)->next = b->overlays_before;
3820 buffer_set_overlays_before (b, XOVERLAY (overlay)); 3833 set_buffer_overlays_before (b, XOVERLAY (overlay));
3821 } 3834 }
3822 3835
3823 /* This puts it in the right list, and in the right order. */ 3836 /* This puts it in the right list, and in the right order. */
@@ -4913,8 +4926,8 @@ init_buffer_once (void)
4913 /* No one will share the text with these buffers, but let's play it safe. */ 4926 /* No one will share the text with these buffers, but let's play it safe. */
4914 buffer_defaults.indirections = 0; 4927 buffer_defaults.indirections = 0;
4915 buffer_local_symbols.indirections = 0; 4928 buffer_local_symbols.indirections = 0;
4916 buffer_set_intervals (&buffer_defaults, NULL); 4929 set_buffer_intervals (&buffer_defaults, NULL);
4917 buffer_set_intervals (&buffer_local_symbols, NULL); 4930 set_buffer_intervals (&buffer_local_symbols, NULL);
4918 XSETPVECTYPESIZE (&buffer_defaults, PVEC_BUFFER, pvecsize); 4931 XSETPVECTYPESIZE (&buffer_defaults, PVEC_BUFFER, pvecsize);
4919 XSETBUFFER (Vbuffer_defaults, &buffer_defaults); 4932 XSETBUFFER (Vbuffer_defaults, &buffer_defaults);
4920 XSETPVECTYPESIZE (&buffer_local_symbols, PVEC_BUFFER, pvecsize); 4933 XSETPVECTYPESIZE (&buffer_local_symbols, PVEC_BUFFER, pvecsize);
@@ -4938,8 +4951,8 @@ init_buffer_once (void)
4938 BSET (&buffer_defaults, mark_active, Qnil); 4951 BSET (&buffer_defaults, mark_active, Qnil);
4939 BSET (&buffer_defaults, file_format, Qnil); 4952 BSET (&buffer_defaults, file_format, Qnil);
4940 BSET (&buffer_defaults, auto_save_file_format, Qt); 4953 BSET (&buffer_defaults, auto_save_file_format, Qt);
4941 buffer_set_overlays_before (&buffer_defaults, NULL); 4954 set_buffer_overlays_before (&buffer_defaults, NULL);
4942 buffer_set_overlays_after (&buffer_defaults, NULL); 4955 set_buffer_overlays_after (&buffer_defaults, NULL);
4943 buffer_defaults.overlay_center = BEG; 4956 buffer_defaults.overlay_center = BEG;
4944 4957
4945 XSETFASTINT (BVAR (&buffer_defaults, tab_width), 8); 4958 XSETFASTINT (BVAR (&buffer_defaults, tab_width), 8);