From 18a9f8d9bc1a3ce57253ca05a2910b8d693ce08e Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 27 Feb 2008 04:10:15 +0000 Subject: (Finsert_file_contents): Don't reset undo_list if no change is made to the buffer. --- src/ChangeLog | 5 +++++ src/fileio.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ChangeLog b/src/ChangeLog index 2e81f6dcfb..edb6201161 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-02-27 Stefan Monnier + + * fileio.c (Finsert_file_contents): Don't reset undo_list if no change + is made to the buffer. + 2008-02-26 Stefan Monnier * dispextern.h (face_at_buffer_position, face_for_overlay_string) diff --git a/src/fileio.c b/src/fileio.c index e2d399f5a4..4430cf4db5 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)) -- cgit v1.2.3