comparison src/buffer.c @ 72592:f6de516bbb4b

* buffer.h (struct buffer_text): New field chars_modiff. (CHARS_MODIFF, BUF_CHARS_MODIFF): New macros. * buffer.c (Fbuffer_chars_modified_tick): New function returning value of BUF_CHARS_MODIFF. (syms_of_buffer): Defsubr it. (Fget_buffer_create): Initialize BUF_CHARS_MODIFF. * insdel.c (modify_region): New argument preserve_chars_modiff. Set CHARS_MODIFF to MODIFF provided preserve_chars_modiff is zero. (insert_1_both, insert_from_string_1, insert_from_buffer_1) (adjust_after_replace, adjust_after_replace_noundo) (replace_range, replace_range_2, del_range_2): Reset CHARS_MODIFF. * lisp.h (modify_region): Add fourth argument in extern. * casefiddle.c (casify_region): Call modify_region with fourth argument zero to assert that CHARS_MODIFF is updated. * editfns.c (Fsubst_char_in_region, Ftranslate_region_internal) (Ftranspose_regions): Likewise. * textprop.c (Fadd_text_properties, Fset_text_properties) (Fremove_text_properties, Fremove_list_of_text_properties): Call modify_region with fourth argument 1 to avoid that CHARS_MODIFF is updated.
author Chong Yidong <cyd@stupidchicken.com>
date Fri, 01 Sep 2006 13:28:13 +0000
parents 71e0aa245bce
children 03f6ec3cc19d
comparison
equal deleted inserted replaced
72591:4582bd903132 72592:f6de516bbb4b
372 BUF_GPT_BYTE (b) = BEG_BYTE; 372 BUF_GPT_BYTE (b) = BEG_BYTE;
373 BUF_BEGV_BYTE (b) = BEG_BYTE; 373 BUF_BEGV_BYTE (b) = BEG_BYTE;
374 BUF_ZV_BYTE (b) = BEG_BYTE; 374 BUF_ZV_BYTE (b) = BEG_BYTE;
375 BUF_Z_BYTE (b) = BEG_BYTE; 375 BUF_Z_BYTE (b) = BEG_BYTE;
376 BUF_MODIFF (b) = 1; 376 BUF_MODIFF (b) = 1;
377 BUF_CHARS_MODIFF (b) = 1;
377 BUF_OVERLAY_MODIFF (b) = 1; 378 BUF_OVERLAY_MODIFF (b) = 1;
378 BUF_SAVE_MODIFF (b) = 1; 379 BUF_SAVE_MODIFF (b) = 1;
379 BUF_INTERVALS (b) = 0; 380 BUF_INTERVALS (b) = 0;
380 BUF_UNCHANGED_MODIFIED (b) = 1; 381 BUF_UNCHANGED_MODIFIED (b) = 1;
381 BUF_OVERLAY_UNCHANGED_MODIFIED (b) = 1; 382 BUF_OVERLAY_UNCHANGED_MODIFIED (b) = 1;
1145 CHECK_BUFFER (buffer); 1146 CHECK_BUFFER (buffer);
1146 buf = XBUFFER (buffer); 1147 buf = XBUFFER (buffer);
1147 } 1148 }
1148 1149
1149 return make_number (BUF_MODIFF (buf)); 1150 return make_number (BUF_MODIFF (buf));
1151 }
1152
1153 DEFUN ("buffer-chars-modified-tick", Fbuffer_chars_modified_tick,
1154 Sbuffer_chars_modified_tick, 0, 1, 0,
1155 doc: /* Return BUFFER's character-change tick counter.
1156 Each buffer has a character-change tick counter, which is set to the
1157 value of the buffer's tick counter \(see `buffer-modified-tick'), each
1158 time text in that buffer is inserted or deleted. By comparing the
1159 values returned by two individual calls of buffer-chars-modified-tick,
1160 you can tell whether a character change occurred in that buffer in
1161 between these calls. No argument or nil as argument means use current
1162 buffer as BUFFER. */)
1163 (buffer)
1164 register Lisp_Object buffer;
1165 {
1166 register struct buffer *buf;
1167 if (NILP (buffer))
1168 buf = current_buffer;
1169 else
1170 {
1171 CHECK_BUFFER (buffer);
1172 buf = XBUFFER (buffer);
1173 }
1174
1175 return make_number (BUF_CHARS_MODIFF (buf));
1150 } 1176 }
1151 1177
1152 DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 1, 2, 1178 DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 1, 2,
1153 "sRename buffer (to new name): \nP", 1179 "sRename buffer (to new name): \nP",
1154 doc: /* Change current buffer's name to NEWNAME (a string). 1180 doc: /* Change current buffer's name to NEWNAME (a string).
6042 defsubr (&Sbuffer_local_value); 6068 defsubr (&Sbuffer_local_value);
6043 defsubr (&Sbuffer_local_variables); 6069 defsubr (&Sbuffer_local_variables);
6044 defsubr (&Sbuffer_modified_p); 6070 defsubr (&Sbuffer_modified_p);
6045 defsubr (&Sset_buffer_modified_p); 6071 defsubr (&Sset_buffer_modified_p);
6046 defsubr (&Sbuffer_modified_tick); 6072 defsubr (&Sbuffer_modified_tick);
6073 defsubr (&Sbuffer_chars_modified_tick);
6047 defsubr (&Srename_buffer); 6074 defsubr (&Srename_buffer);
6048 defsubr (&Sother_buffer); 6075 defsubr (&Sother_buffer);
6049 defsubr (&Sbuffer_enable_undo); 6076 defsubr (&Sbuffer_enable_undo);
6050 defsubr (&Skill_buffer); 6077 defsubr (&Skill_buffer);
6051 defsubr (&Sset_buffer_major_mode); 6078 defsubr (&Sset_buffer_major_mode);