diff options
Diffstat (limited to 'src/buffer.c')
| -rw-r--r-- | src/buffer.c | 71 |
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 | |||
| 444 | static inline void | ||
| 445 | set_buffer_overlays_before (struct buffer *b, struct Lisp_Overlay *o) | ||
| 446 | { | ||
| 447 | b->overlays_before = o; | ||
| 448 | } | ||
| 449 | |||
| 450 | static inline void | ||
| 451 | set_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); |