]> code.delx.au - gnu-emacs/blobdiff - src/print.c
Merge from trunk
[gnu-emacs] / src / print.c
index f48b618775d9e0a8a6e5a758f33f17475ac658cb..11bce153ffcac34c085c56fc6ea4525d9b42af9f 100644 (file)
@@ -111,7 +111,7 @@ int print_output_debug_flag EXTERNALLY_VISIBLE = 1;
    EMACS_INT old_point_byte = -1, start_point_byte = -1;               \
    int specpdl_count = SPECPDL_INDEX ();                               \
    int free_print_buffer = 0;                                          \
-   int multibyte = !NILP (current_buffer->enable_multibyte_characters);        \
+   int multibyte = !NILP (BVAR (current_buffer, enable_multibyte_characters)); \
    Lisp_Object original
 
 #define PRINTPREPARE                                                   \
@@ -144,10 +144,10 @@ int print_output_debug_flag EXTERNALLY_VISIBLE = 1;
    if (NILP (printcharfun))                                            \
      {                                                                 \
        Lisp_Object string;                                             \
-       if (NILP (current_buffer->enable_multibyte_characters)          \
+       if (NILP (BVAR (current_buffer, enable_multibyte_characters))           \
           && ! print_escape_multibyte)                                 \
          specbind (Qprint_escape_multibyte, Qt);                       \
-       if (! NILP (current_buffer->enable_multibyte_characters)                \
+       if (! NILP (BVAR (current_buffer, enable_multibyte_characters))         \
           && ! print_escape_nonascii)                                  \
          specbind (Qprint_escape_nonascii, Qt);                                \
        if (print_buffer != 0)                                          \
@@ -173,7 +173,7 @@ int print_output_debug_flag EXTERNALLY_VISIBLE = 1;
    if (NILP (printcharfun))                                            \
      {                                                                 \
        if (print_buffer_pos != print_buffer_pos_byte                   \
-          && NILP (current_buffer->enable_multibyte_characters))       \
+          && NILP (BVAR (current_buffer, enable_multibyte_characters)))        \
         {                                                              \
           unsigned char *temp                                          \
             = (unsigned char *) alloca (print_buffer_pos + 1);         \
@@ -250,7 +250,7 @@ printchar (unsigned int ch, Lisp_Object fun)
       else
        {
          int multibyte_p
-           = !NILP (current_buffer->enable_multibyte_characters);
+           = !NILP (BVAR (current_buffer, enable_multibyte_characters));
 
          setup_echo_area_for_printing (multibyte_p);
          insert_char (ch);
@@ -302,7 +302,7 @@ strout (const char *ptr, EMACS_INT size, EMACS_INT size_byte,
         job.  */
       int i;
       int multibyte_p
-       = !NILP (current_buffer->enable_multibyte_characters);
+       = !NILP (BVAR (current_buffer, enable_multibyte_characters));
 
       setup_echo_area_for_printing (multibyte_p);
       message_dolog (ptr, size_byte, 0, multibyte_p);
@@ -371,8 +371,8 @@ print_string (Lisp_Object string, Lisp_Object printcharfun)
        chars = SCHARS (string);
       else if (! print_escape_nonascii
               && (EQ (printcharfun, Qt)
-                  ? ! NILP (buffer_defaults.enable_multibyte_characters)
-                  : ! NILP (current_buffer->enable_multibyte_characters)))
+                  ? ! NILP (BVAR (&buffer_defaults, enable_multibyte_characters))
+                  : ! NILP (BVAR (current_buffer, enable_multibyte_characters))))
        {
          /* If unibyte string STRING contains 8-bit codes, we must
             convert STRING to a multibyte string containing the same
@@ -504,14 +504,14 @@ temp_output_buffer_setup (const char *bufname)
 
   Fkill_all_local_variables ();
   delete_all_overlays (current_buffer);
-  current_buffer->directory = old->directory;
-  current_buffer->read_only = Qnil;
-  current_buffer->filename = Qnil;
-  current_buffer->undo_list = Qt;
+  BVAR (current_buffer, directory) = BVAR (old, directory);
+  BVAR (current_buffer, read_only) = Qnil;
+  BVAR (current_buffer, filename) = Qnil;
+  BVAR (current_buffer, undo_list) = Qt;
   eassert (current_buffer->overlays_before == NULL);
   eassert (current_buffer->overlays_after == NULL);
-  current_buffer->enable_multibyte_characters
-    = buffer_defaults.enable_multibyte_characters;
+  BVAR (current_buffer, enable_multibyte_characters)
+    = BVAR (&buffer_defaults, enable_multibyte_characters);
   specbind (Qinhibit_read_only, Qt);
   specbind (Qinhibit_modification_hooks, Qt);
   Ferase_buffer ();
@@ -1009,7 +1009,10 @@ float_to_string (char *buf, double data)
     {
       /* Generate the fewest number of digits that represent the
         floating point value without losing information.  */
-      dtoastr (buf, FLOAT_TO_STRING_BUFSIZE, 0, 0, data);
+      dtoastr (buf, FLOAT_TO_STRING_BUFSIZE - 2, 0, 0, data);
+      /* The decimal point must be printed, or the byte compiler can
+        get confused (Bug#8033). */
+      width = 1;
     }
   else                 /* oink oink */
     {
@@ -1064,8 +1067,7 @@ float_to_string (char *buf, double data)
          cp[1] = '0';
          cp[2] = 0;
        }
-
-      if (*cp == 0)
+      else if (*cp == 0)
        {
          *cp++ = '.';
          *cp++ = '0';
@@ -1801,7 +1803,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
          if (!NILP (XWINDOW (obj)->buffer))
            {
              strout (" on ", -1, -1, printcharfun, 0);
-             print_string (XBUFFER (XWINDOW (obj)->buffer)->name, printcharfun);
+             print_string (BVAR (XBUFFER (XWINDOW (obj)->buffer), name), printcharfun);
            }
          PRINTCHAR ('>');
        }
@@ -1902,16 +1904,16 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
        }
       else if (BUFFERP (obj))
        {
-         if (NILP (XBUFFER (obj)->name))
+         if (NILP (BVAR (XBUFFER (obj), name)))
            strout ("#<killed buffer>", -1, -1, printcharfun, 0);
          else if (escapeflag)
            {
              strout ("#<buffer ", -1, -1, printcharfun, 0);
-             print_string (XBUFFER (obj)->name, printcharfun);
+             print_string (BVAR (XBUFFER (obj), name), printcharfun);
              PRINTCHAR ('>');
            }
          else
-           print_string (XBUFFER (obj)->name, printcharfun);
+           print_string (BVAR (XBUFFER (obj), name), printcharfun);
        }
       else if (WINDOW_CONFIGURATIONP (obj))
        {
@@ -2023,7 +2025,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
              sprintf (buf, "at %ld", (long)marker_position (obj));
              strout (buf, -1, -1, printcharfun, 0);
              strout (" in ", -1, -1, printcharfun, 0);
-             print_string (XMARKER (obj)->buffer->name, printcharfun);
+             print_string (BVAR (XMARKER (obj)->buffer, name), printcharfun);
            }
          PRINTCHAR ('>');
          break;
@@ -2038,7 +2040,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
                       (long)marker_position (OVERLAY_START (obj)),
                       (long)marker_position (OVERLAY_END   (obj)));
              strout (buf, -1, -1, printcharfun, 0);
-             print_string (XMARKER (OVERLAY_START (obj))->buffer->name,
+             print_string (BVAR (XMARKER (OVERLAY_START (obj))->buffer, name),
                            printcharfun);
            }
          PRINTCHAR ('>');