From: Richard M. Stallman Date: Thu, 25 Nov 1993 06:28:03 +0000 (+0000) Subject: (graft_intervals_into_buffer): New arg LENGTH. X-Git-Tag: emacs-19.34~10682 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0b79989fc40a4e7c8b508da1de9e5c76bf47e74b;p=emacs.git (graft_intervals_into_buffer): New arg LENGTH. If source has no intervals, set dest properties to nil. --- diff --git a/src/intervals.c b/src/intervals.c index 59a0cd9a102..3c67f215aa6 100644 --- a/src/intervals.c +++ b/src/intervals.c @@ -1221,6 +1221,7 @@ make_new_interval (intervals, start, length) #endif /* 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 @@ -1228,7 +1229,8 @@ make_new_interval (intervals, start, length) 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. @@ -1253,9 +1255,9 @@ make_new_interval (intervals, start, length) 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; { @@ -1266,7 +1268,17 @@ graft_intervals_into_buffer (source, position, buffer, 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)) {