diff options
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/fileio.c | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 2e81f6dcfb7..edb62011614 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-02-27 Stefan Monnier <monnier@iro.umontreal.ca> + + * fileio.c (Finsert_file_contents): Don't reset undo_list if no change + is made to the buffer. + 2008-02-26 Stefan Monnier <monnier@iro.umontreal.ca> * dispextern.h (face_at_buffer_position, face_for_overlay_string) diff --git a/src/fileio.c b/src/fileio.c index e2d399f5a45..4430cf4db57 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -3716,6 +3716,7 @@ variable `last-coding-system-used' to the coding system actually used. */) struct stat st; register int fd; int inserted = 0; + int nochange = 0; register int how_much; register int unprocessed; int count = SPECPDL_INDEX (); @@ -4281,7 +4282,10 @@ variable `last-coding-system-used' to the coding system actually used. */) { specpdl_ptr--; /* Truncate the buffer to the size of the file. */ - del_range_byte (same_at_start, same_at_end, 0); + if (same_at_start == same_at_end) + nochange = 1; + else + del_range_byte (same_at_start, same_at_end, 0); inserted = 0; unbind_to (this_count, Qnil); @@ -4628,7 +4632,7 @@ variable `last-coding-system-used' to the coding system actually used. */) if (!NILP (visit)) { - if (!EQ (current_buffer->undo_list, Qt)) + if (!EQ (current_buffer->undo_list, Qt) && !nochange) current_buffer->undo_list = Qnil; if (NILP (handler)) |