]> git.eshelyaron.com Git - emacs.git/commitdiff
(unwind_read): Print a message when discarding inserted
authorGerd Moellmann <gerd@gnu.org>
Wed, 11 Jul 2001 15:42:26 +0000 (15:42 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 11 Jul 2001 15:42:26 +0000 (15:42 +0000)
text or switching the buffer to unibyte.  Change parameter.
(Finsert_file_contents): Don't pass VISIT to unwind_read.

src/ChangeLog
src/fileio.c

index 4a2692f1b1d31d9db5feef8d404bf280d6781776..d856d22780708f307272da1fa82a9f8c463028ed 100644 (file)
@@ -1,5 +1,9 @@
 2001-07-11  Gerd Moellmann  <gerd@gnu.org>
 
+       * fileio.c (unwind_read): Print a message when discarding inserted
+       text or switching the buffer to unibyte.  Change parameter.
+       (Finsert_file_contents): Don't pass VISIT to unwind_read.
+       
        * fileio.c (unwind_read): New function.
        (Finsert_file_contents): Record it as unwind-function for
        the case that reading is interrupted by C-g.
index cf03f393328c98a25e71c9ed29ea0b64901e0acf..0f05a465ab7835cead12339cdeb9a8628b648ba6 100644 (file)
@@ -3421,9 +3421,8 @@ decide_coding_unwind (unwind_data)
 
 /* Unwind-function for reading from a file in insert-file-contents.
 
-   INFO is a pair (INSERTED-BYTES . VISIT).  INSERTED-BYTES is the
-   number of bytes successfully inserted into current_buffer.  VISIT
-   is the same as the parameter VISIT Of insert-file-contents.
+   INSERTED_BYTES is the number of bytes successfully inserted into
+   current_buffer.
 
    When reading is interrupted by C-g, this leaves the newly read part
    of the current buffer undecoded.  If this happens in a multibyte
@@ -3438,16 +3437,22 @@ decide_coding_unwind (unwind_data)
            +--------- the gap ---------+        */
 
 static Lisp_Object
-unwind_read (info)
-     Lisp_Object info;
+unwind_read (inserted_bytes)
+     Lisp_Object inserted_bytes;
 {
   if (!NILP (current_buffer->enable_multibyte_characters))
     {
-      int nbytes = XINT (XCAR (info));
-      int visit = !NILP (XCDR (info));
+      int nbytes = XINT (inserted_bytes);
+      Lisp_Object args[3];
+      char *action;
 
-      if (visit || Z == nbytes)
-       current_buffer->enable_multibyte_characters = Qnil;
+      if (Z == nbytes)
+       {
+         /* Buffer was previously empty.  Switch it to unibyte
+            because newly inserted text is not decoded.  */
+         current_buffer->enable_multibyte_characters = Qnil;
+         action = "buffer made unibyte";
+       }
       else
        {
          ZV -= nbytes;
@@ -3458,7 +3463,15 @@ unwind_read (info)
          GPT = PT;
          GPT_BYTE = PT_BYTE;
          GAP_SIZE = nbytes + GAP_SIZE;
+         
+         action = "no text inserted";
        }
+
+      
+      args[0] = build_string ("Quit while inserting text in buffer `%s': %s");
+      args[1] = current_buffer->name;
+      args[2] = build_string (action);
+      Fmessage (3, args);
     }
       
   return Qnil;
@@ -4187,8 +4200,7 @@ actually used.")
       /* Allow quitting out of the actual I/O.  If a C-g interrupts
         this, make sure that no invalid characters remain
         in the undecoded part read.  */
-      record_unwind_protect (unwind_read,
-                            Fcons (make_number (inserted), visit));
+      record_unwind_protect (unwind_read, make_number (inserted));
       immediate_quit = 1;
       QUIT;
       this = emacs_read (fd, BYTE_POS_ADDR (PT_BYTE + inserted - 1) + 1,