[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/intervals.c
From: |
Richard M. Stallman |
Subject: |
[Emacs-diffs] Changes to emacs/src/intervals.c |
Date: |
Mon, 22 Sep 2003 11:51:19 -0400 |
Index: emacs/src/intervals.c
diff -c emacs/src/intervals.c:1.124 emacs/src/intervals.c:1.125
*** emacs/src/intervals.c:1.124 Mon Sep 1 11:45:52 2003
--- emacs/src/intervals.c Mon Sep 22 11:51:19 2003
***************
*** 1712,1717 ****
--- 1712,1718 ----
{
register INTERVAL under, over, this, prev;
register INTERVAL tree;
+ int over_used;
tree = BUF_INTERVALS (buffer);
***************
*** 1814,1821 ****
--- 1815,1828 ----
adjust_intervals_for_insertion, so stickiness has
already been taken care of. */
+ /* OVER is the interval we are copying from next.
+ OVER_USED says how many characters' worth of OVER
+ have already been copied into target intervals.
+ UNDER is the next interval in the target. */
+ over_used = 0;
while (! NULL_INTERVAL_P (over))
{
+ /* If UNDER is longer than OVER, split it. */
if (LENGTH (over) < LENGTH (under))
{
this = split_interval_left (under, LENGTH (over));
***************
*** 1823,1834 ****
}
else
this = under;
! copy_properties (over, this);
if (inherit)
merge_properties (over, this);
else
copy_properties (over, this);
! over = next_interval (over);
}
if (! NULL_INTERVAL_P (BUF_INTERVALS (buffer)))
--- 1830,1856 ----
}
else
this = under;
!
! /* THIS is now the interval to copy or merge into.
! OVER covers all of it. */
if (inherit)
merge_properties (over, this);
else
copy_properties (over, this);
!
! /* If THIS and OVER end at the same place,
! advance OVER to a new source interval. */
! if (LENGTH (this) == LENGTH (over) - over_used)
! {
! over = next_interval (over);
! over_used = 0;
! }
! else
! /* Otherwise just record that more of OVER has been used. */
! over_used += LENGTH (this);
!
! /* Always advance to a new target interval. */
! under = next_interval (this);
}
if (! NULL_INTERVAL_P (BUF_INTERVALS (buffer)))