diff options
Diffstat (limited to 'src/buffer.c')
| -rw-r--r-- | src/buffer.c | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/src/buffer.c b/src/buffer.c index f73d2d07537..a37a61c0fc8 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -458,11 +458,8 @@ copy_overlays (struct buffer *b, struct Lisp_Overlay *list) | |||
| 458 | static void | 458 | static void |
| 459 | clone_per_buffer_values (struct buffer *from, struct buffer *to) | 459 | clone_per_buffer_values (struct buffer *from, struct buffer *to) |
| 460 | { | 460 | { |
| 461 | Lisp_Object to_buffer; | ||
| 462 | int offset; | 461 | int offset; |
| 463 | 462 | ||
| 464 | XSETBUFFER (to_buffer, to); | ||
| 465 | |||
| 466 | for_each_per_buffer_object_at (offset) | 463 | for_each_per_buffer_object_at (offset) |
| 467 | { | 464 | { |
| 468 | Lisp_Object obj; | 465 | Lisp_Object obj; |
| @@ -475,9 +472,9 @@ clone_per_buffer_values (struct buffer *from, struct buffer *to) | |||
| 475 | if (MARKERP (obj) && XMARKER (obj)->buffer == from) | 472 | if (MARKERP (obj) && XMARKER (obj)->buffer == from) |
| 476 | { | 473 | { |
| 477 | struct Lisp_Marker *m = XMARKER (obj); | 474 | struct Lisp_Marker *m = XMARKER (obj); |
| 478 | obj = Fmake_marker (); | 475 | |
| 476 | obj = build_marker (to, m->charpos, m->bytepos); | ||
| 479 | XMARKER (obj)->insertion_type = m->insertion_type; | 477 | XMARKER (obj)->insertion_type = m->insertion_type; |
| 480 | set_marker_both (obj, to_buffer, m->charpos, m->bytepos); | ||
| 481 | } | 478 | } |
| 482 | 479 | ||
| 483 | PER_BUFFER_VALUE (to, offset) = obj; | 480 | PER_BUFFER_VALUE (to, offset) = obj; |
| @@ -615,32 +612,24 @@ CLONE nil means the indirect buffer's state is reset to default values. */) | |||
| 615 | eassert (NILP (BVAR (b->base_buffer, begv_marker))); | 612 | eassert (NILP (BVAR (b->base_buffer, begv_marker))); |
| 616 | eassert (NILP (BVAR (b->base_buffer, zv_marker))); | 613 | eassert (NILP (BVAR (b->base_buffer, zv_marker))); |
| 617 | 614 | ||
| 618 | BVAR (b->base_buffer, pt_marker) = Fmake_marker (); | 615 | BVAR (b->base_buffer, pt_marker) |
| 619 | set_marker_both (BVAR (b->base_buffer, pt_marker), base_buffer, | 616 | = build_marker (b->base_buffer, b->base_buffer->pt, b->base_buffer->pt_byte); |
| 620 | b->base_buffer->pt, | 617 | |
| 621 | b->base_buffer->pt_byte); | 618 | BVAR (b->base_buffer, begv_marker) |
| 619 | = build_marker (b->base_buffer, b->base_buffer->begv, b->base_buffer->begv_byte); | ||
| 622 | 620 | ||
| 623 | BVAR (b->base_buffer, begv_marker) = Fmake_marker (); | 621 | BVAR (b->base_buffer, zv_marker) |
| 624 | set_marker_both (BVAR (b->base_buffer, begv_marker), base_buffer, | 622 | = build_marker (b->base_buffer, b->base_buffer->zv, b->base_buffer->zv_byte); |
| 625 | b->base_buffer->begv, | ||
| 626 | b->base_buffer->begv_byte); | ||
| 627 | 623 | ||
| 628 | BVAR (b->base_buffer, zv_marker) = Fmake_marker (); | ||
| 629 | set_marker_both (BVAR (b->base_buffer, zv_marker), base_buffer, | ||
| 630 | b->base_buffer->zv, | ||
| 631 | b->base_buffer->zv_byte); | ||
| 632 | XMARKER (BVAR (b->base_buffer, zv_marker))->insertion_type = 1; | 624 | XMARKER (BVAR (b->base_buffer, zv_marker))->insertion_type = 1; |
| 633 | } | 625 | } |
| 634 | 626 | ||
| 635 | if (NILP (clone)) | 627 | if (NILP (clone)) |
| 636 | { | 628 | { |
| 637 | /* Give the indirect buffer markers for its narrowing. */ | 629 | /* Give the indirect buffer markers for its narrowing. */ |
| 638 | BVAR (b, pt_marker) = Fmake_marker (); | 630 | BVAR (b, pt_marker) = build_marker (b, b->pt, b->pt_byte); |
| 639 | set_marker_both (BVAR (b, pt_marker), buf, b->pt, b->pt_byte); | 631 | BVAR (b, begv_marker) = build_marker (b, b->begv, b->begv_byte); |
| 640 | BVAR (b, begv_marker) = Fmake_marker (); | 632 | BVAR (b, zv_marker) = build_marker (b, b->zv, b->zv_byte); |
| 641 | set_marker_both (BVAR (b, begv_marker), buf, b->begv, b->begv_byte); | ||
| 642 | BVAR (b, zv_marker) = Fmake_marker (); | ||
| 643 | set_marker_both (BVAR (b, zv_marker), buf, b->zv, b->zv_byte); | ||
| 644 | XMARKER (BVAR (b, zv_marker))->insertion_type = 1; | 633 | XMARKER (BVAR (b, zv_marker))->insertion_type = 1; |
| 645 | } | 634 | } |
| 646 | else | 635 | else |