aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Moellmann <[email protected]>2000-12-04 13:30:09 +0000
committerGerd Moellmann <[email protected]>2000-12-04 13:30:09 +0000
commited8e506f242f571faea4ad7767321aac6b2fb8de (patch)
treec290e07288429828d59014ef9da6f4d8195af271
parent6c083b4cec6d39893a0fa3c2c994e6c05bf0a07b (diff)
(Finsert_file_contents): When VISIT is t, don't
record undo information for format-decode.
-rw-r--r--src/fileio.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/fileio.c b/src/fileio.c
index 3385da52da..0eb07ce3bc 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -3418,7 +3418,7 @@ actually used.")
int inserted = 0;
register int how_much;
register int unprocessed;
- int count = specpdl_ptr - specpdl;
+ int count = BINDING_STACK_SIZE ();
struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
Lisp_Object handler, val, insval, orig_filename;
Lisp_Object p;
@@ -4289,10 +4289,24 @@ actually used.")
/* Decode file format */
if (inserted > 0)
{
+ int empty_undo_list_p = 0;
+
+ /* If we're anyway going to discard undo information, don't
+ record it in the first place. The buffer's undo list at this
+ point is either nil or t when visiting a file. */
+ if (!NILP (visit))
+ {
+ empty_undo_list_p = NILP (current_buffer->undo_list);
+ current_buffer->undo_list = Qt;
+ }
+
insval = call3 (Qformat_decode,
Qnil, make_number (inserted), visit);
CHECK_NUMBER (insval, 0);
inserted = XFASTINT (insval);
+
+ if (!NILP (visit))
+ current_buffer->undo_list = empty_undo_list_p ? Qnil : Qt;
}
if (set_coding_system)