# HG changeset patch # User Jan D. # Date 1263912897 -3600 # Node ID 00e805a10065a259a1f16a46b68e998761dd4aa9 # Parent 7d9b2b9edc21628eac05179f9c0a79a0c38d9a41# Parent 51a1add37c3f36e011d256d358b5aa1a94dcc2c9 Merge from trunk diff -r 7d9b2b9edc21 -r 00e805a10065 src/ChangeLog --- a/src/ChangeLog Tue Jan 19 15:54:13 2010 +0100 +++ b/src/ChangeLog Tue Jan 19 15:54:57 2010 +0100 @@ -182,6 +182,13 @@ * dispnew.c (change_frame_size_1): newwidth == FRAME_COLS (f) must also be true before we can return early (bug #5339). +2010-01-08 Alan Mackenzie + + Fix spurious before-change-functions invocation from (insert ?\n). + * textprop.c (set_text_properties): rename parameter + `signal_after_change_p' to `coherent_change_p', and make the + invocation of `modify_region' conditional on it. + 2010-01-06 David Reitter * nsfns.m (ns_get_screen): Rewrite, returning NULL for non-NS. diff -r 7d9b2b9edc21 -r 00e805a10065 src/textprop.c --- a/src/textprop.c Tue Jan 19 15:54:13 2010 +0100 +++ b/src/textprop.c Tue Jan 19 15:54:57 2010 +0100 @@ -1346,13 +1346,15 @@ /* Replace properties of text from START to END with new list of properties PROPERTIES. OBJECT is the buffer or string containing the text. OBJECT nil means use the current buffer. - SIGNAL_AFTER_CHANGE_P nil means don't signal after changes. Value - is nil if the function _detected_ that it did not replace any - properties, non-nil otherwise. */ + COHERENT_CHANGE_P nil means this is being called as an internal + subroutine, rather than as a change primitive with checking of + read-only, invoking change hooks, etc.. Value is nil if the + function _detected_ that it did not replace any properties, non-nil + otherwise. */ Lisp_Object -set_text_properties (start, end, properties, object, signal_after_change_p) - Lisp_Object start, end, properties, object, signal_after_change_p; +set_text_properties (start, end, properties, object, coherent_change_p) + Lisp_Object start, end, properties, object, coherent_change_p; { register INTERVAL i; Lisp_Object ostart, oend; @@ -1397,12 +1399,12 @@ return Qnil; } - if (BUFFERP (object)) + if (BUFFERP (object) && !NILP (coherent_change_p)) modify_region (XBUFFER (object), XINT (start), XINT (end), 1); set_text_properties_1 (start, end, properties, object, i); - if (BUFFERP (object) && !NILP (signal_after_change_p)) + if (BUFFERP (object) && !NILP (coherent_change_p)) signal_after_change (XINT (start), XINT (end) - XINT (start), XINT (end) - XINT (start)); return Qt;