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);