#endif
\f
/* Insert the intervals of SOURCE into BUFFER at POSITION.
+ LENGTH is the length of the text in SOURCE.
This is used in insdel.c when inserting Lisp_Strings into the
buffer. The text corresponding to SOURCE is already in the buffer
belonging to the string being inserted; intervals are never
shared.
- If the inserted text had no intervals associated, this function
+ If the inserted text had no intervals associated, and we don't
+ want to inherit the surrounding text's properties, this function
simply returns -- offset_intervals should handle placing the
text in the correct interval, depending on the sticky bits.
text... */
void
-graft_intervals_into_buffer (source, position, buffer, inherit)
+graft_intervals_into_buffer (source, position, length, buffer, inherit)
INTERVAL source;
- int position;
+ int position, length;
struct buffer *buffer;
int inherit;
{
/* If the new text has no properties, it becomes part of whatever
interval it was inserted into. */
if (NULL_INTERVAL_P (source))
- return;
+ {
+ Lisp_Object buf;
+ if (!inherit)
+ {
+ XSET (buf, Lisp_Buffer, buffer);
+ Fset_text_properties (make_number (position),
+ make_number (position + length),
+ Qnil, buf);
+ }
+ return;
+ }
if (NULL_INTERVAL_P (tree))
{