Mercurial > emacs
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); |
