aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorDmitry Antipov2012-07-24 10:45:44 +0400
committerDmitry Antipov2012-07-24 10:45:44 +0400
commitfa691a83f0f67db762d8d8d9d05d9ff97f25841f (patch)
treea66fd4ee200f1ff0213fa5bee3a544a146659014 /src/buffer.c
parentec1b09b12339df0920e8901c6bd355a7afd2bc11 (diff)
downloademacs-fa691a83f0f67db762d8d8d9d05d9ff97f25841f.tar.gz
emacs-fa691a83f0f67db762d8d8d9d05d9ff97f25841f.zip
Simplify copy_overlay.
* buffer.c (copy_overlay): Simplify, use build_marker. * lisp.h (struct Lisp_Overlay): Restore comment with minor tweaks.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c30
1 files changed, 11 insertions, 19 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 734ddb5a1c1..c017db7b034 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -410,32 +410,24 @@ even if it is dead. The return value is never nil. */)
410static struct Lisp_Overlay * 410static struct Lisp_Overlay *
411copy_overlays (struct buffer *b, struct Lisp_Overlay *list) 411copy_overlays (struct buffer *b, struct Lisp_Overlay *list)
412{ 412{
413 Lisp_Object buffer;
414 struct Lisp_Overlay *result = NULL, *tail = NULL; 413 struct Lisp_Overlay *result = NULL, *tail = NULL;
415 414
416 XSETBUFFER (buffer, b);
417
418 for (; list; list = list->next) 415 for (; list; list = list->next)
419 { 416 {
420 Lisp_Object overlay, start, end, old_overlay; 417 Lisp_Object overlay, start, end;
421 ptrdiff_t charpos; 418 struct Lisp_Marker *m;
422
423 XSETMISC (old_overlay, list);
424 charpos = marker_position (OVERLAY_START (old_overlay));
425 start = Fmake_marker ();
426 Fset_marker (start, make_number (charpos), buffer);
427 XMARKER (start)->insertion_type
428 = XMARKER (OVERLAY_START (old_overlay))->insertion_type;
429 419
430 charpos = marker_position (OVERLAY_END (old_overlay)); 420 eassert (MARKERP (list->start));
431 end = Fmake_marker (); 421 m = XMARKER (list->start);
432 Fset_marker (end, make_number (charpos), buffer); 422 start = build_marker (b, m->charpos, m->bytepos);
433 XMARKER (end)->insertion_type 423 XMARKER (start)->insertion_type = m->insertion_type;
434 = XMARKER (OVERLAY_END (old_overlay))->insertion_type;
435 424
436 overlay = build_overlay 425 eassert (MARKERP (list->end));
437 (start, end, Fcopy_sequence (OVERLAY_PLIST (old_overlay))); 426 m = XMARKER (list->end);
427 end = build_marker (b, m->charpos, m->bytepos);
428 XMARKER (end)->insertion_type = m->insertion_type;
438 429
430 overlay = build_overlay (start, end, Fcopy_sequence (list->plist));
439 if (tail) 431 if (tail)
440 tail = tail->next = XOVERLAY (overlay); 432 tail = tail->next = XOVERLAY (overlay);
441 else 433 else