diff options
| author | Chong Yidong | 2006-09-01 13:28:13 +0000 |
|---|---|---|
| committer | Chong Yidong | 2006-09-01 13:28:13 +0000 |
| commit | 3e1451520bdae2a79247347e66724306692533f6 (patch) | |
| tree | e652c2d5f077b41d82c14d815d75531a96a546d5 /src/buffer.c | |
| parent | d178a6ebf9c714f2360997d16746d8c81f04f07b (diff) | |
| download | emacs-3e1451520bdae2a79247347e66724306692533f6.tar.gz emacs-3e1451520bdae2a79247347e66724306692533f6.zip | |
* 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.
Diffstat (limited to 'src/buffer.c')
| -rw-r--r-- | src/buffer.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/buffer.c b/src/buffer.c index 863b217d2b4..58c047a87ba 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -374,6 +374,7 @@ The value is never nil. */) | |||
| 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; |
| @@ -1148,6 +1149,31 @@ No argument or nil as argument means use current buffer as BUFFER. */) | |||
| 1148 | 1149 | ||
| 1149 | return make_number (BUF_MODIFF (buf)); | 1150 | return make_number (BUF_MODIFF (buf)); |
| 1150 | } | 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)); | ||
| 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", |
| @@ -6044,6 +6070,7 @@ The function `kill-all-local-variables' runs this before doing anything else. * | |||
| 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); |