summaryrefslogtreecommitdiff
path: root/src/intervals.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1993-11-25 06:28:03 +0000
committerRichard M. Stallman <rms@gnu.org>1993-11-25 06:28:03 +0000
commit0b79989fc40a4e7c8b508da1de9e5c76bf47e74b (patch)
tree9531545dc3d75dd80890bc3d033f25111b63b074 /src/intervals.c
parentaf9015f93d074a0b2ff220853a5c6dc3370f802a (diff)
downloademacs-0b79989fc40a4e7c8b508da1de9e5c76bf47e74b.tar.gz
(graft_intervals_into_buffer): New arg LENGTH.
If source has no intervals, set dest properties to nil.
Diffstat (limited to 'src/intervals.c')
-rw-r--r--src/intervals.c20
1 files changed, 16 insertions, 4 deletions
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))
{