diff options
author | Gerd Moellmann <[email protected]> | 2000-12-04 13:30:09 +0000 |
---|---|---|
committer | Gerd Moellmann <[email protected]> | 2000-12-04 13:30:09 +0000 |
commit | ed8e506f242f571faea4ad7767321aac6b2fb8de (patch) | |
tree | c290e07288429828d59014ef9da6f4d8195af271 | |
parent | 6c083b4cec6d39893a0fa3c2c994e6c05bf0a07b (diff) |
(Finsert_file_contents): When VISIT is t, don't
record undo information for format-decode.
-rw-r--r-- | src/fileio.c | 16 |
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) |