changeset 92243:c03d2269686e

(Finsert_file_contents): Don't reset undo_list if no change is made to the buffer.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 27 Feb 2008 04:10:15 +0000
parents 4e775ca003e8
children 7ce88981bf93
files src/ChangeLog src/fileio.c
diffstat 2 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Tue Feb 26 21:35:04 2008 +0000
+++ b/src/ChangeLog	Wed Feb 27 04:10:15 2008 +0000
@@ -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)
--- a/src/fileio.c	Tue Feb 26 21:35:04 2008 +0000
+++ b/src/fileio.c	Wed Feb 27 04:10:15 2008 +0000
@@ -3716,6 +3716,7 @@
   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 @@
 	{
 	  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 @@
 
   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))