(make_gap_smaller): Preserve BEG_UNCHANGED during gap
authorKim F. Storm <storm@cua.dk>
Sat, 9 Feb 2002 22:58:25 +0000 (22:58 +0000)
committerKim F. Storm <storm@cua.dk>
Sat, 9 Feb 2002 22:58:25 +0000 (22:58 +0000)
reduction.  This fixes a display problem where stray newlines were
inserted in the window (corrected by C-l).  Clarified code (IMHO).

src/ChangeLog
src/insdel.c

index 044eb6c..a7bb994 100644 (file)
@@ -1,3 +1,9 @@
+2002-02-09  Kim F. Storm  <storm@cua.dk>
+
+       * insdel.c (make_gap_smaller): Preserve BEG_UNCHANGED during gap
+       reduction.  This fixes a display problem where stray newlines were
+       inserted in the window (corrected by C-l).  Clarified code (IMHO).
+
 2002-02-09  Eli Zaretskii  <eliz@is.elta.co.il>
 
        * dispextern.h (CURRENT_MODE_LINE_FACE_ID): Fix last change.
index 486875d..365819b 100644 (file)
@@ -584,7 +584,8 @@ make_gap_smaller (nbytes_removed)
   int real_gap_loc_byte;
   int real_Z;
   int real_Z_byte;
-  int old_gap_size;
+  int real_beg_unchanged;
+  int new_gap_size;
 
   /* Make sure the gap is at least 20 bytes.  */
   if (GAP_SIZE - nbytes_removed < 20)
@@ -596,18 +597,19 @@ make_gap_smaller (nbytes_removed)
 
   real_gap_loc = GPT;
   real_gap_loc_byte = GPT_BYTE;
-  old_gap_size = GAP_SIZE;
+  new_gap_size = GAP_SIZE - nbytes_removed;
   real_Z = Z;
   real_Z_byte = Z_BYTE;
+  real_beg_unchanged = BEG_UNCHANGED;
 
   /* Pretend that the last unwanted part of the gap is the entire gap,
      and that the first desired part of the gap is part of the buffer
      text.  */
-  bzero (GPT_ADDR, GAP_SIZE - nbytes_removed);
-  GPT += GAP_SIZE - nbytes_removed;
-  GPT_BYTE += GAP_SIZE - nbytes_removed;
-  Z += GAP_SIZE - nbytes_removed;
-  Z_BYTE += GAP_SIZE - nbytes_removed;
+  bzero (GPT_ADDR, new_gap_size);
+  GPT += new_gap_size;
+  GPT_BYTE += new_gap_size;
+  Z += new_gap_size;
+  Z_BYTE += new_gap_size;
   GAP_SIZE = nbytes_removed;
 
   /* Move the unwanted pretend gap to the end of the buffer.  This
@@ -617,11 +619,12 @@ make_gap_smaller (nbytes_removed)
   enlarge_buffer_text (current_buffer, -nbytes_removed);
 
   /* Now restore the desired gap.  */
-  GAP_SIZE = old_gap_size - nbytes_removed;
+  GAP_SIZE = new_gap_size;
   GPT = real_gap_loc;
   GPT_BYTE = real_gap_loc_byte;
   Z = real_Z;
   Z_BYTE = real_Z_byte;
+  BEG_UNCHANGED = real_beg_unchanged;
 
   /* Put an anchor.  */
   *(Z_ADDR) = 0;