868 |
/* Point marker. */ |
/* Point marker. */ |
869 |
tem = XCAR (info); |
tem = XCAR (info); |
870 |
Fgoto_char (tem); |
Fgoto_char (tem); |
871 |
unchain_marker (tem); |
unchain_marker (XMARKER (tem)); |
872 |
|
|
873 |
/* Mark marker. */ |
/* Mark marker. */ |
874 |
info = XCDR (info); |
info = XCDR (info); |
876 |
omark = Fmarker_position (current_buffer->mark); |
omark = Fmarker_position (current_buffer->mark); |
877 |
Fset_marker (current_buffer->mark, tem, Fcurrent_buffer ()); |
Fset_marker (current_buffer->mark, tem, Fcurrent_buffer ()); |
878 |
nmark = Fmarker_position (tem); |
nmark = Fmarker_position (tem); |
879 |
unchain_marker (tem); |
unchain_marker (XMARKER (tem)); |
880 |
|
|
881 |
/* visible */ |
/* visible */ |
882 |
info = XCDR (info); |
info = XCDR (info); |
3814 |
register int start1_byte, end1_byte, start2_byte, end2_byte; |
register int start1_byte, end1_byte, start2_byte, end2_byte; |
3815 |
{ |
{ |
3816 |
register int amt1, amt1_byte, amt2, amt2_byte, diff, diff_byte, mpos; |
register int amt1, amt1_byte, amt2, amt2_byte, diff, diff_byte, mpos; |
3817 |
register Lisp_Object marker; |
register struct Lisp_Marker *marker; |
3818 |
|
|
3819 |
/* Update point as if it were a marker. */ |
/* Update point as if it were a marker. */ |
3820 |
if (PT < start1) |
if (PT < start1) |
3849 |
amt1_byte = (end2_byte - start2_byte) + (start2_byte - end1_byte); |
amt1_byte = (end2_byte - start2_byte) + (start2_byte - end1_byte); |
3850 |
amt2_byte = (end1_byte - start1_byte) + (start2_byte - end1_byte); |
amt2_byte = (end1_byte - start1_byte) + (start2_byte - end1_byte); |
3851 |
|
|
3852 |
for (marker = BUF_MARKERS (current_buffer); !NILP (marker); |
for (marker = BUF_MARKERS (current_buffer); marker; marker = marker->next) |
|
marker = XMARKER (marker)->chain) |
|
3853 |
{ |
{ |
3854 |
mpos = marker_byte_position (marker); |
mpos = marker->bytepos; |
3855 |
if (mpos >= start1_byte && mpos < end2_byte) |
if (mpos >= start1_byte && mpos < end2_byte) |
3856 |
{ |
{ |
3857 |
if (mpos < end1_byte) |
if (mpos < end1_byte) |
3860 |
mpos += diff_byte; |
mpos += diff_byte; |
3861 |
else |
else |
3862 |
mpos -= amt2_byte; |
mpos -= amt2_byte; |
3863 |
XMARKER (marker)->bytepos = mpos; |
marker->bytepos = mpos; |
3864 |
} |
} |
3865 |
mpos = XMARKER (marker)->charpos; |
mpos = marker->charpos; |
3866 |
if (mpos >= start1 && mpos < end2) |
if (mpos >= start1 && mpos < end2) |
3867 |
{ |
{ |
3868 |
if (mpos < end1) |
if (mpos < end1) |
3872 |
else |
else |
3873 |
mpos -= amt2; |
mpos -= amt2; |
3874 |
} |
} |
3875 |
XMARKER (marker)->charpos = mpos; |
marker->charpos = mpos; |
3876 |
} |
} |
3877 |
} |
} |
3878 |
|
|