# HG changeset patch # User Kim F. Storm # Date 1013295445 0 # Node ID a4b638169822bc0bfb69c4d57dc018fde6ab11be # Parent cafac76a491b66b50a77ac5f9a05c089fb528964 (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). diff -r cafac76a491b -r a4b638169822 src/insdel.c --- a/src/insdel.c Sat Feb 09 14:04:30 2002 +0000 +++ b/src/insdel.c Sat Feb 09 22:57:25 2002 +0000 @@ -584,7 +584,8 @@ 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 @@ 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 @@ 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;