]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fformat): Update thissize from field_width
authorRichard M. Stallman <rms@gnu.org>
Wed, 2 Jan 2002 19:57:07 +0000 (19:57 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 2 Jan 2002 19:57:07 +0000 (19:57 +0000)
based on the actual width, in the string case.

src/ChangeLog
src/editfns.c

index a319234b1cf96a98e2be73e6162148c3d99ccc63..e0ffe90c5946abed0862a928df2cae2f2b6cf337 100644 (file)
@@ -1,3 +1,8 @@
+2002-01-02  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (Fformat): Update thissize from field_width
+       based on the actual width, in the string case.
+
 2002-01-01  Pavel Jan\e,Bm\e(Bk  <Pavel@Janik.cz>
 
        * charset.h (UNIBYTE_STR_AS_MULTIBYTE_P): Parenthesize assignment
index 9c118cc67b1be29a9931064b629d35693a1ddeb6..fac0db045ebc4e31ec2965711d307d5616c1317c 100644 (file)
@@ -3217,6 +3217,7 @@ usage: (format STRING &rest OBJECTS)  */)
     if (*format++ == '%')
       {
        int thissize = 0;
+       int actual_width = 0;
        unsigned char *this_format_start = format - 1;
        int field_width, precision;
 
@@ -3297,6 +3298,7 @@ usage: (format STRING &rest OBJECTS)  */)
            if (*format != 's' && *format != 'S')
              error ("Format specifier doesn't match argument type");
            thissize = CONVERTED_BYTE_SIZE (multibyte, args[n]);
+           actual_width = lisp_string_width (args[n], -1, NULL, NULL);
          }
        /* Would get MPV otherwise, since Lisp_Int's `point' to low memory.  */
        else if (INTEGERP (args[n]) && *format != 's')
@@ -3350,7 +3352,7 @@ usage: (format STRING &rest OBJECTS)  */)
            goto string;
          }
 
-       thissize = max (field_width, thissize);
+       thissize += max (0, field_width - actual_width);
        total += thissize + 4;
       }