]> code.delx.au - gnu-emacs/blobdiff - src/textprop.c
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
[gnu-emacs] / src / textprop.c
index b071b34750812fd9bce8206f5c6798c44e70c20d..85f8c5ed1c7d6c3d7caccf4a69300b7b4f47de19 100644 (file)
@@ -304,6 +304,8 @@ set_properties (properties, interval, object)
            record_property_change (interval->position, LENGTH (interval),
                                    XCONS (sym)->car, XCONS (value)->car,
                                    object);
+           signal_after_change (interval->position, LENGTH (interval),
+                                LENGTH (interval));
          }
 
       /* For each new property that has no value at all in the old plist,
@@ -319,6 +321,8 @@ set_properties (properties, interval, object)
            record_property_change (interval->position, LENGTH (interval),
                                    XCONS (sym)->car, Qnil,
                                    object);
+           signal_after_change (interval->position, LENGTH (interval),
+                                LENGTH (interval));
          }
     }
 
@@ -386,6 +390,7 @@ add_properties (plist, i, object)
                               make_number (i->position + LENGTH (i)));
                record_property_change (i->position, LENGTH (i),
                                        sym1, Fcar (this_cdr), object);
+               signal_after_change (i->position, LENGTH (i), LENGTH (i));
              }
 
            /* I's property has a different value -- change it */
@@ -404,6 +409,7 @@ add_properties (plist, i, object)
                             make_number (i->position + LENGTH (i)));
              record_property_change (i->position, LENGTH (i),
                                      sym1, Qnil, object);
+             signal_after_change (i->position, LENGTH (i), LENGTH (i));
            }
          i->plist = Fcons (sym1, Fcons (val1, i->plist));
          changed++;
@@ -445,6 +451,7 @@ remove_properties (plist, i, object)
              record_property_change (i->position, LENGTH (i),
                                      sym, Fcar (Fcdr (current_plist)),
                                      object);
+             signal_after_change (i->position, LENGTH (i), LENGTH (i));
            }
 
          current_plist = Fcdr (Fcdr (current_plist));
@@ -466,6 +473,7 @@ remove_properties (plist, i, object)
                                 make_number (i->position + LENGTH (i)));
                  record_property_change (i->position, LENGTH (i),
                                          sym, Fcar (Fcdr (this)), object);
+                 signal_after_change (i->position, LENGTH (i), LENGTH (i));
                }
 
              Fsetcdr (Fcdr (tail2), Fcdr (Fcdr (this)));
@@ -1030,19 +1038,23 @@ is the string or buffer containing the text.")
          if (LENGTH (i) > len)
            i = split_interval_left (i, len);
 
-         if (NULL_INTERVAL_P (prev_changed))
-           set_properties (props, i, object);
-         else
+         /* We have to call set_properties even if we are going to
+            merge the intervals, so as to make the undo records
+            and cause redisplay to happen.  */
+         set_properties (props, i, object);
+         if (!NULL_INTERVAL_P (prev_changed))
            merge_interval_left (i);
          return Qt;
        }
 
       len -= LENGTH (i);
+
+      /* We have to call set_properties even if we are going to
+        merge the intervals, so as to make the undo records
+        and cause redisplay to happen.  */
+      set_properties (props, i, object);
       if (NULL_INTERVAL_P (prev_changed))
-       {
-         set_properties (props, i, object);
-         prev_changed = i;
-       }
+       prev_changed = i;
       else
        prev_changed = i = merge_interval_left (i);
 
@@ -1488,7 +1500,7 @@ verify_interval_modification (buf, start, end)
       if (NILP (Vinhibit_read_only) || CONSP (Vinhibit_read_only))
        {
          /* If I and PREV differ we need to check for the read-only
-            property together with its stickyness. If either I or
+            property together with its stickiness. If either I or
             PREV are 0, this check is all we need.
             We have to take special care, since read-only may be
             indirectly defined via the category property.  */