I think I have fixed this; does this give good results?
*** fileio.c 09 May 2005 16:51:43 -0400 1.540 --- fileio.c 11 May 2005 03:26:34 -0400 *** 3728,3733 **** --- 3732,3739 ---- int set_coding_system = 0; int coding_system_decided = 0; int read_quit = 0; + int old_Vdeactivate_mark = Vdeactivate_mark; + int we_locked_file = 0; if (current_buffer->base_buffer && ! NILP (visit)) error ("Cannot do file visiting in an indirect buffer"); *************** *** 4400,4407 **** /* For a special file, all we can do is guess. */ total = READ_BUF_SIZE; ! if (NILP (visit) && total > 0) ! prepare_to_modify_buffer (PT, PT, NULL); move_gap (PT); if (GAP_SIZE < total) --- 4406,4422 ---- /* For a special file, all we can do is guess. */ total = READ_BUF_SIZE; ! if (NILP (visit) && inserted > 0) ! { ! #ifdef CLASH_DETECTION ! if (!NILP (current_buffer->file_truename) ! /* Make binding buffer-file-name to nil effective. */ ! && !NILP (current_buffer->filename) ! && SAVE_MODIFF >= MODIFF) ! we_locked_file = 1; ! #endif /* CLASH_DETECTION */ ! prepare_to_modify_buffer (GPT, GPT, NULL); ! } move_gap (PT); if (GAP_SIZE < total) *************** *** 4491,4496 **** --- 4506,4521 ---- } } + /* Now we have read all the file data into the gap. + If it was empty, undo marking the buffer modified. */ + + if (inserted == 0) + { + if (we_locked_file) + unlock_file (current_buffer->file_truename); + Vdeactivate_mark = old_Vdeactivate_mark; + } + /* Make the text read part of the buffer. */ GAP_SIZE -= inserted; GPT += inserted; _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel