changeset 21236:90e90245e679

(insert_1_both, insert_from_string_1, insert_from_buffer_1): (adjust_before_replace, adjust_after_replace, replace_range): (del_range_2): Call record_delete the new way. Use make_buffer_string_both to make the string to pass.
author Richard M. Stallman <rms@gnu.org>
date Sat, 21 Mar 1998 03:57:35 +0000
parents eba3d61855d0
children c5a8ee5b9b39
files src/insdel.c
diffstat 1 files changed, 68 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/src/insdel.c	Sat Mar 21 02:57:08 1998 +0000
+++ b/src/insdel.c	Sat Mar 21 03:57:35 1998 +0000
@@ -923,7 +923,7 @@
      register int nchars, nbytes;
      int inherit, prepare, before_markers;
 {
-  register Lisp_Object temp;
+  register Lisp_Object temp, deletion;
   int combined_before_bytes, combined_after_bytes;
 
   if (NILP (current_buffer->enable_multibyte_characters))
@@ -951,17 +951,23 @@
 
   if (combined_after_bytes)
     {
+      deletion = make_buffer_string_both (PT, PT_BYTE,
+					  PT + combined_after_bytes,
+					  PT_BYTE + combined_after_bytes, 1);
+
       adjust_markers_for_record_delete (PT, PT_BYTE,
 					PT + combined_after_bytes,
 					PT_BYTE + combined_after_bytes);
-      record_delete (PT, combined_after_bytes);
+      record_delete (PT, deletion);
     }
 
   if (combined_before_bytes)
     {
+      deletion = make_buffer_string_both (PT - 1, CHAR_TO_BYTE (PT - 1),
+					  PT, PT_BYTE, 1);
       adjust_markers_for_record_delete (PT - 1, CHAR_TO_BYTE (PT - 1),
 					PT, PT_BYTE);
-      record_delete (PT - 1, 1);
+      record_delete (PT - 1, deletion);
     }
 
   record_insert (PT - !!combined_before_bytes,
@@ -1076,6 +1082,7 @@
   int combined_before_bytes, combined_after_bytes;
   int adjusted_nchars;
   INTERVAL intervals;
+  Lisp_Object deletion;
 
   /* Make OUTGOING_NBYTES describe the text
      as it will be inserted in this buffer.  */
@@ -1131,17 +1138,23 @@
 
   if (combined_after_bytes)
     {
+      deletion = make_buffer_string_both (PT, PT_BYTE,
+					  PT + combined_after_bytes,
+					  PT_BYTE + combined_after_bytes, 1);
+
       adjust_markers_for_record_delete (PT, PT_BYTE,
 					PT + combined_after_bytes,
 					PT_BYTE + combined_after_bytes);
-      record_delete (PT, combined_after_bytes);
+      record_delete (PT, deletion);
     }
 
   if (combined_before_bytes)
     {
+      deletion = make_buffer_string_both (PT - 1, CHAR_TO_BYTE (PT - 1),
+					  PT, PT_BYTE, 1);
       adjust_markers_for_record_delete (PT - 1, CHAR_TO_BYTE (PT - 1),
 					PT, PT_BYTE);
-      record_delete (PT - 1, 1);
+      record_delete (PT - 1, deletion);
     }
 
   record_insert (PT - !!combined_before_bytes,
@@ -1226,7 +1239,7 @@
      int from, nchars;
      int inherit;
 {
-  register Lisp_Object temp;
+  register Lisp_Object temp, deletion;
   int chunk;
   int from_byte = buf_charpos_to_bytepos (buf, from);
   int to_byte = buf_charpos_to_bytepos (buf, from + nchars);
@@ -1296,17 +1309,23 @@
 
   if (combined_after_bytes)
     {
+      deletion = make_buffer_string_both (PT, PT_BYTE,
+					  PT + combined_after_bytes,
+					  PT_BYTE + combined_after_bytes, 1);
+
       adjust_markers_for_record_delete (PT, PT_BYTE,
 					PT + combined_after_bytes,
 					PT_BYTE + combined_after_bytes);
-      record_delete (PT, combined_after_bytes);
+      record_delete (PT, deletion);
     }
 
   if (combined_before_bytes)
     {
+      deletion = make_buffer_string_both (PT - 1, CHAR_TO_BYTE (PT - 1),
+					  PT, PT_BYTE, 1);
       adjust_markers_for_record_delete (PT - 1, CHAR_TO_BYTE (PT - 1),
 					PT, PT_BYTE);
-      record_delete (PT - 1, 1);
+      record_delete (PT - 1, deletion);
     }
 
   record_insert (PT - !!combined_before_bytes,
@@ -1372,8 +1391,11 @@
 adjust_before_replace (from, from_byte, to, to_byte)
      int from, from_byte, to, to_byte;
 {
+  Lisp_Object deletion;
+  deletion = make_buffer_string_both (from, from_byte, to, to_byte, 1);
+
   adjust_markers_for_delete (from, from_byte, to, to_byte);
-  record_delete (from, to - from);
+  record_delete (from, deletion);
   adjust_overlays_for_delete (from, to - from);
 }
 
@@ -1389,20 +1411,27 @@
     = count_combining_before (GPT_ADDR, len_byte, from, from_byte);
   int combined_after_bytes
     = count_combining_after (GPT_ADDR, len_byte, from, from_byte);
+  Lisp_Object deletion;
 
   if (combined_after_bytes)
     {
+      deletion = make_buffer_string_both (from, from_byte,
+					  from + combined_after_bytes,
+					  from_byte + combined_after_bytes, 1);
+
       adjust_markers_for_record_delete (from, from_byte,
 					from + combined_after_bytes,
 					from_byte + combined_after_bytes);
-      record_delete (from, combined_after_bytes);
+      record_delete (from, deletion);
     }
 
   if (combined_before_bytes)
     {
+      deletion = make_buffer_string_both (from - 1, CHAR_TO_BYTE (from - 1),
+					  from, from_byte, 1);
       adjust_markers_for_record_delete (from - 1, CHAR_TO_BYTE (from - 1),
 					from, from_byte);
-      record_delete (from - 1, 1);
+      record_delete (from - 1, deletion);
     }
 
   /* Update various buffer positions for the new text.  */
@@ -1477,6 +1506,7 @@
   int adjusted_inschars;
   INTERVAL intervals;
   int outgoing_insbytes = insbytes;
+  Lisp_Object deletion;
 
   GCPRO1 (new);
 
@@ -1526,13 +1556,15 @@
   if (to < GPT)
     gap_left (to, to_byte, 0);
 
+  deletion = make_buffer_string_both (from, from_byte, to, to_byte, 1);
+
   /* Relocate all markers pointing into the new, larger gap
      to point at the end of the text before the gap.
      Do this before recording the deletion,
      so that undo handles this after reinserting the text.  */
   adjust_markers_for_delete (from, from_byte, to, to_byte);
 
-  record_delete (from, nchars_del);
+  record_delete (from, deletion);
 
   GAP_SIZE += nbytes_del;
   ZV -= nchars_del;
@@ -1584,17 +1616,23 @@
 
   if (combined_after_bytes)
     {
+      deletion = make_buffer_string_both (PT, PT_BYTE,
+					  PT + combined_after_bytes,
+					  PT_BYTE + combined_after_bytes, 1);
+
       adjust_markers_for_record_delete (PT, PT_BYTE,
 					PT + combined_after_bytes,
 					PT_BYTE + combined_after_bytes);
-      record_delete (PT, combined_after_bytes);
+      record_delete (PT, deletion);
     }
 
   if (combined_before_bytes)
     {
+      deletion = make_buffer_string_both (PT - 1, CHAR_TO_BYTE (PT - 1),
+					  PT, PT_BYTE, 1);
       adjust_markers_for_record_delete (PT - 1, CHAR_TO_BYTE (PT - 1),
 					PT, PT_BYTE);
-      record_delete (PT - 1, 1);
+      record_delete (PT - 1, deletion);
     }
 
   record_insert (PT - !!combined_before_bytes,
@@ -1783,6 +1821,8 @@
 {
   register int nbytes_del, nchars_del;
   int combined_after_bytes;
+  Lisp_Object deletion;
+  int from_byte_1;
 
   nchars_del = to - from;
   nbytes_del = to_byte - from_byte;
@@ -1796,6 +1836,19 @@
   combined_after_bytes
     = count_combining_before (BUF_BYTE_ADDRESS (current_buffer, to_byte),
 			      ZV_BYTE - to_byte, from, from_byte);
+  if (combined_after_bytes)
+    {
+      from_byte_1 = from_byte;
+      DEC_POS (from_byte_1);
+    }
+  else
+    from_byte_1 = from_byte;
+
+  deletion
+    = make_buffer_string_both (from - !!combined_after_bytes,
+			       from_byte_1,
+			       to + combined_after_bytes,
+			       to_byte + combined_after_bytes, 1);
 
   /* Relocate all markers pointing into the new, larger gap
      to point at the end of the text before the gap.
@@ -1804,9 +1857,6 @@
   adjust_markers_for_delete (from, from_byte, to, to_byte);
   if (combined_after_bytes)
     {
-      int from_byte_1 = from_byte;
-      DEC_POS (from_byte_1);
-
       /* Adjust markers for the phony deletion
 	 that we are about to call record_undo for.  */
 
@@ -1821,8 +1871,7 @@
       adjust_markers_for_record_delete (from - 1, from_byte_1,
 					from, from_byte);
     }
-  record_delete (from - !!combined_after_bytes,
-		 nchars_del + combined_after_bytes + !!combined_after_bytes);
+  record_delete (from - !!combined_after_bytes, deletion);
 
   if (combined_after_bytes)
     /* COMBINED_AFTER_BYTES nonzero means that the above record_delete