Mercurial > emacs
comparison src/textprop.c @ 83542:2d56e13fd23d
Merged from emacs@sv.gnu.org
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-413
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-414
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-415
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-416
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-417
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-418
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-419
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-420
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-421
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-422
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-423
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-424
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-425
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-426
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-427
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-428
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-429
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-430
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-431
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-432
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-433
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-434
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-435
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-436
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-437
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-438
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-439
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-440
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-441
lisp/url/url-methods.el: Fix format error when http_proxy is empty string
* emacs@sv.gnu.org/emacs--devo--0--patch-442
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-443
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-444
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-445
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-446
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-447
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-448
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-449
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-450
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-451
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-452
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-453
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-454
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-455
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-456
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-457
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-458
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-459
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-460
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-461
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-462
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-463
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-464
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-465
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-466
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-467
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-468
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-469
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-470
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-471
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-472
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-473
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-128
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-129
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-130
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-131
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-132
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-133
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-134
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-135
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-136
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-137
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-138
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-139
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-140
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-141
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-142
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-143
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-144
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-145
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-146
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-147
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-148
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-149
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-582
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sat, 14 Oct 2006 17:36:28 +0000 |
parents | 84ff2640fb2a |
children | 3d45362f1d38 a1a25ac6c88a |
comparison
equal
deleted
inserted
replaced
83541:694bbb62a75d | 83542:2d56e13fd23d |
---|---|
999 | 999 |
1000 while (!NULL_INTERVAL_P (next) && intervals_equal (i, next) | 1000 while (!NULL_INTERVAL_P (next) && intervals_equal (i, next) |
1001 && (NILP (limit) || next->position < XFASTINT (limit))) | 1001 && (NILP (limit) || next->position < XFASTINT (limit))) |
1002 next = next_interval (next); | 1002 next = next_interval (next); |
1003 | 1003 |
1004 if (NULL_INTERVAL_P (next)) | 1004 if (NULL_INTERVAL_P (next) |
1005 || (next->position | |
1006 >= (INTEGERP (limit) | |
1007 ? XFASTINT (limit) | |
1008 : (STRINGP (object) | |
1009 ? SCHARS (object) | |
1010 : BUF_ZV (XBUFFER (object)))))) | |
1005 return limit; | 1011 return limit; |
1006 if (NILP (limit)) | 1012 else |
1007 XSETFASTINT (limit, (STRINGP (object) | 1013 return make_number (next->position); |
1008 ? SCHARS (object) | |
1009 : BUF_ZV (XBUFFER (object)))); | |
1010 if (!(next->position < XFASTINT (limit))) | |
1011 return limit; | |
1012 | |
1013 XSETFASTINT (position, next->position); | |
1014 return position; | |
1015 } | 1014 } |
1016 | 1015 |
1017 /* Return 1 if there's a change in some property between BEG and END. */ | 1016 /* Return 1 if there's a change in some property between BEG and END. */ |
1018 | 1017 |
1019 int | 1018 int |
1081 while (! NULL_INTERVAL_P (next) | 1080 while (! NULL_INTERVAL_P (next) |
1082 && EQ (here_val, textget (next->plist, prop)) | 1081 && EQ (here_val, textget (next->plist, prop)) |
1083 && (NILP (limit) || next->position < XFASTINT (limit))) | 1082 && (NILP (limit) || next->position < XFASTINT (limit))) |
1084 next = next_interval (next); | 1083 next = next_interval (next); |
1085 | 1084 |
1086 if (NULL_INTERVAL_P (next)) | 1085 if (NULL_INTERVAL_P (next) |
1086 || (next->position | |
1087 >= (INTEGERP (limit) | |
1088 ? XFASTINT (limit) | |
1089 : (STRINGP (object) | |
1090 ? SCHARS (object) | |
1091 : BUF_ZV (XBUFFER (object)))))) | |
1087 return limit; | 1092 return limit; |
1088 if (NILP (limit)) | 1093 else |
1089 XSETFASTINT (limit, (STRINGP (object) | 1094 return make_number (next->position); |
1090 ? SCHARS (object) | |
1091 : BUF_ZV (XBUFFER (object)))); | |
1092 if (!(next->position < XFASTINT (limit))) | |
1093 return limit; | |
1094 | |
1095 return make_number (next->position); | |
1096 } | 1095 } |
1097 | 1096 |
1098 DEFUN ("previous-property-change", Fprevious_property_change, | 1097 DEFUN ("previous-property-change", Fprevious_property_change, |
1099 Sprevious_property_change, 1, 3, 0, | 1098 Sprevious_property_change, 1, 3, 0, |
1100 doc: /* Return the position of previous property change. | 1099 doc: /* Return the position of previous property change. |
1130 previous = previous_interval (i); | 1129 previous = previous_interval (i); |
1131 while (!NULL_INTERVAL_P (previous) && intervals_equal (previous, i) | 1130 while (!NULL_INTERVAL_P (previous) && intervals_equal (previous, i) |
1132 && (NILP (limit) | 1131 && (NILP (limit) |
1133 || (previous->position + LENGTH (previous) > XFASTINT (limit)))) | 1132 || (previous->position + LENGTH (previous) > XFASTINT (limit)))) |
1134 previous = previous_interval (previous); | 1133 previous = previous_interval (previous); |
1135 if (NULL_INTERVAL_P (previous)) | 1134 |
1135 if (NULL_INTERVAL_P (previous) | |
1136 || (previous->position + LENGTH (previous) | |
1137 <= (INTEGERP (limit) | |
1138 ? XFASTINT (limit) | |
1139 : (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object)))))) | |
1136 return limit; | 1140 return limit; |
1137 if (NILP (limit)) | 1141 else |
1138 XSETFASTINT (limit, (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object)))); | 1142 return make_number (previous->position + LENGTH (previous)); |
1139 if (!(previous->position + LENGTH (previous) > XFASTINT (limit))) | |
1140 return limit; | |
1141 | |
1142 return make_number (previous->position + LENGTH (previous)); | |
1143 } | 1143 } |
1144 | 1144 |
1145 DEFUN ("previous-single-property-change", Fprevious_single_property_change, | 1145 DEFUN ("previous-single-property-change", Fprevious_single_property_change, |
1146 Sprevious_single_property_change, 2, 4, 0, | 1146 Sprevious_single_property_change, 2, 4, 0, |
1147 doc: /* Return the position of previous property change for a specific property. | 1147 doc: /* Return the position of previous property change for a specific property. |
1182 while (!NULL_INTERVAL_P (previous) | 1182 while (!NULL_INTERVAL_P (previous) |
1183 && EQ (here_val, textget (previous->plist, prop)) | 1183 && EQ (here_val, textget (previous->plist, prop)) |
1184 && (NILP (limit) | 1184 && (NILP (limit) |
1185 || (previous->position + LENGTH (previous) > XFASTINT (limit)))) | 1185 || (previous->position + LENGTH (previous) > XFASTINT (limit)))) |
1186 previous = previous_interval (previous); | 1186 previous = previous_interval (previous); |
1187 if (NULL_INTERVAL_P (previous)) | 1187 |
1188 if (NULL_INTERVAL_P (previous) | |
1189 || (previous->position + LENGTH (previous) | |
1190 <= (INTEGERP (limit) | |
1191 ? XFASTINT (limit) | |
1192 : (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object)))))) | |
1188 return limit; | 1193 return limit; |
1189 if (NILP (limit)) | 1194 else |
1190 XSETFASTINT (limit, (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object)))); | 1195 return make_number (previous->position + LENGTH (previous)); |
1191 if (!(previous->position + LENGTH (previous) > XFASTINT (limit))) | |
1192 return limit; | |
1193 | |
1194 return make_number (previous->position + LENGTH (previous)); | |
1195 } | 1196 } |
1196 | 1197 |
1197 /* Callers note, this can GC when OBJECT is a buffer (or nil). */ | 1198 /* Callers note, this can GC when OBJECT is a buffer (or nil). */ |
1198 | 1199 |
1199 DEFUN ("add-text-properties", Fadd_text_properties, | 1200 DEFUN ("add-text-properties", Fadd_text_properties, |
1251 copy_properties (unchanged, i); | 1252 copy_properties (unchanged, i); |
1252 } | 1253 } |
1253 } | 1254 } |
1254 | 1255 |
1255 if (BUFFERP (object)) | 1256 if (BUFFERP (object)) |
1256 modify_region (XBUFFER (object), XINT (start), XINT (end)); | 1257 modify_region (XBUFFER (object), XINT (start), XINT (end), 1); |
1257 | 1258 |
1258 /* We are at the beginning of interval I, with LEN chars to scan. */ | 1259 /* We are at the beginning of interval I, with LEN chars to scan. */ |
1259 for (;;) | 1260 for (;;) |
1260 { | 1261 { |
1261 if (i == 0) | 1262 if (i == 0) |
1391 if (NULL_INTERVAL_P (i)) | 1392 if (NULL_INTERVAL_P (i)) |
1392 return Qnil; | 1393 return Qnil; |
1393 } | 1394 } |
1394 | 1395 |
1395 if (BUFFERP (object)) | 1396 if (BUFFERP (object)) |
1396 modify_region (XBUFFER (object), XINT (start), XINT (end)); | 1397 modify_region (XBUFFER (object), XINT (start), XINT (end), 1); |
1397 | 1398 |
1398 set_text_properties_1 (start, end, properties, object, i); | 1399 set_text_properties_1 (start, end, properties, object, i); |
1399 | 1400 |
1400 if (BUFFERP (object) && !NILP (signal_after_change_p)) | 1401 if (BUFFERP (object) && !NILP (signal_after_change_p)) |
1401 signal_after_change (XINT (start), XINT (end) - XINT (start), | 1402 signal_after_change (XINT (start), XINT (end) - XINT (start), |
1539 copy_properties (unchanged, i); | 1540 copy_properties (unchanged, i); |
1540 } | 1541 } |
1541 } | 1542 } |
1542 | 1543 |
1543 if (BUFFERP (object)) | 1544 if (BUFFERP (object)) |
1544 modify_region (XBUFFER (object), XINT (start), XINT (end)); | 1545 modify_region (XBUFFER (object), XINT (start), XINT (end), 1); |
1545 | 1546 |
1546 /* We are at the beginning of an interval, with len to scan */ | 1547 /* We are at the beginning of an interval, with len to scan */ |
1547 for (;;) | 1548 for (;;) |
1548 { | 1549 { |
1549 if (i == 0) | 1550 if (i == 0) |
1653 return Qnil; | 1654 return Qnil; |
1654 | 1655 |
1655 if (LENGTH (i) == len) | 1656 if (LENGTH (i) == len) |
1656 { | 1657 { |
1657 if (!modified && BUFFERP (object)) | 1658 if (!modified && BUFFERP (object)) |
1658 modify_region (XBUFFER (object), XINT (start), XINT (end)); | 1659 modify_region (XBUFFER (object), XINT (start), XINT (end), 1); |
1659 remove_properties (Qnil, properties, i, object); | 1660 remove_properties (Qnil, properties, i, object); |
1660 if (BUFFERP (object)) | 1661 if (BUFFERP (object)) |
1661 signal_after_change (XINT (start), XINT (end) - XINT (start), | 1662 signal_after_change (XINT (start), XINT (end) - XINT (start), |
1662 XINT (end) - XINT (start)); | 1663 XINT (end) - XINT (start)); |
1663 return Qt; | 1664 return Qt; |
1666 /* i has the properties, and goes past the change limit */ | 1667 /* i has the properties, and goes past the change limit */ |
1667 unchanged = i; | 1668 unchanged = i; |
1668 i = split_interval_left (i, len); | 1669 i = split_interval_left (i, len); |
1669 copy_properties (unchanged, i); | 1670 copy_properties (unchanged, i); |
1670 if (!modified && BUFFERP (object)) | 1671 if (!modified && BUFFERP (object)) |
1671 modify_region (XBUFFER (object), XINT (start), XINT (end)); | 1672 modify_region (XBUFFER (object), XINT (start), XINT (end), 1); |
1672 remove_properties (Qnil, properties, i, object); | 1673 remove_properties (Qnil, properties, i, object); |
1673 if (BUFFERP (object)) | 1674 if (BUFFERP (object)) |
1674 signal_after_change (XINT (start), XINT (end) - XINT (start), | 1675 signal_after_change (XINT (start), XINT (end) - XINT (start), |
1675 XINT (end) - XINT (start)); | 1676 XINT (end) - XINT (start)); |
1676 return Qt; | 1677 return Qt; |
1677 } | 1678 } |
1678 | 1679 |
1679 if (interval_has_some_properties_list (properties, i)) | 1680 if (interval_has_some_properties_list (properties, i)) |
1680 { | 1681 { |
1681 if (!modified && BUFFERP (object)) | 1682 if (!modified && BUFFERP (object)) |
1682 modify_region (XBUFFER (object), XINT (start), XINT (end)); | 1683 modify_region (XBUFFER (object), XINT (start), XINT (end), 1); |
1683 remove_properties (Qnil, properties, i, object); | 1684 remove_properties (Qnil, properties, i, object); |
1684 modified = 1; | 1685 modified = 1; |
1685 } | 1686 } |
1686 len -= LENGTH (i); | 1687 len -= LENGTH (i); |
1687 i = next_interval (i); | 1688 i = next_interval (i); |