From f8198e198dc5274b5ee46bddda5d31e52f2979b2 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 12 Mar 1998 00:38:28 +0000 Subject: [PATCH] (Finsert_file_contents): Don't do position adjustments and handling post-read-conversion here, they are done in code_convert_region. Even if a file is read by no-conversion, call adjust_after_replace to adjust positions. --- src/fileio.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/fileio.c b/src/fileio.c index 4006bf839aa..7def34b7dcb 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -3776,6 +3776,25 @@ This does code conversion according to the value of\n\ inserted = (NILP (current_buffer->enable_multibyte_characters) ? coding.produced : coding.produced_char); } + else if (!NILP (current_buffer->enable_multibyte_characters)) + { + int inserted_byte = inserted; + + /* At first, reset positions to the state of before + insertion. */ + GAP_SIZE += inserted; + GPT_BYTE -= inserted; + ZV_BYTE -= inserted; + Z_BYTE -= inserted; + GPT -= inserted; + ZV -= inserted; + Z -= inserted; + + /* Then adjust positions. */ + inserted = multibyte_chars_in_text (GPT_ADDR, inserted); + adjust_after_replace (PT, PT_BYTE, PT, PT_BYTE, + inserted, inserted_byte); + } #ifdef DOS_NT /* Use the conversion type to determine buffer-file-type @@ -3787,24 +3806,6 @@ This does code conversion according to the value of\n\ else current_buffer->buffer_file_type = Qt; #endif - - record_insert (PT, inserted); - - /* Only defined if Emacs is compiled with USE_TEXT_PROPERTIES */ - offset_intervals (current_buffer, PT, inserted); - MODIFF++; - - if (! NILP (coding.post_read_conversion)) - { - Lisp_Object val; - - val = call1 (coding.post_read_conversion, make_number (inserted)); - if (!NILP (val)) - { - CHECK_NUMBER (val, 0); - inserted = XFASTINT (val); - } - } } set_coding_system = 1; -- 2.39.2