]> code.delx.au - gnu-emacs/commitdiff
Minor tweaks of copying text properties when padding strings
authorEli Zaretskii <eliz@gnu.org>
Sat, 9 Jul 2016 08:01:17 +0000 (11:01 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 9 Jul 2016 08:01:17 +0000 (11:01 +0300)
* src/editfns.c (styled_format): Don't include padding on the left
in the properties at the beginning of the string.  (Bug#23897)

* test/src/editfns-tests.el (format-properties): Add tests for
faces when the string is padded on the left or on the right.

src/editfns.c
test/src/editfns-tests.el

index 73f024409b1b361cbb95de7621c9c42179936342..4c8336b8c8209ab63e7cec430ae8285a8907e4c2 100644 (file)
@@ -4175,13 +4175,13 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
              convbytes += padding;
              if (convbytes <= buf + bufsize - p)
                {
-                  info[n].start = nchars;
                  if (! minus_flag)
                    {
                      memset (p, ' ', padding);
                      p += padding;
                      nchars += padding;
                    }
+                  info[n].start = nchars;
 
                  if (p > buf
                      && multibyte
index 62d7bc4f5be331884c0f85d00d4f61d97e78c372..507ceef2f7d13d19d644f2a73e65fbd0bb712e88 100644 (file)
@@ -54,7 +54,7 @@
   ;; Bug #23859
   (should (ert-equal-including-properties
            (format "%4s" (propertize "hi" 'face 'bold))
-           #("  hi" 0 4 (face bold))))
+           #("  hi" 2 4 (face bold))))
 
   ;; Bug #23897
   (should (ert-equal-including-properties
            (format "%s" (concat (propertize "01" 'face 'bold)
                                 (propertize "23" 'face 'underline)
                                 "45"))
-           #("012345" 0 2 (face bold) 2 4 (face underline)))))
+           #("012345" 0 2 (face bold) 2 4 (face underline))))
+  ;; The last property range is extended to include padding on the
+  ;; right, but the first range is not extended to the left to include
+  ;; padding on the left!
+  (should (ert-equal-including-properties
+           (format "%12s" (concat (propertize "01234" 'face 'bold) "56789"))
+           #("  0123456789" 2 7 (face bold))))
+  (should (ert-equal-including-properties
+           (format "%-12s" (concat (propertize "01234" 'face 'bold) "56789"))
+           #("0123456789  " 0 5 (face bold))))
+  (should (ert-equal-including-properties
+           (format "%10s" (concat (propertize "01" 'face 'bold)
+                                  (propertize "23" 'face 'underline)
+                                  "45"))
+           #("    012345" 4 6 (face bold) 6 8 (face underline))))
+  (should (ert-equal-including-properties
+           (format "%-10s" (concat (propertize "01" 'face 'bold)
+                                   (propertize "23" 'face 'underline)
+                                   "45"))
+           #("012345    " 0 2 (face bold) 2 4 (face underline))))
+  (should (ert-equal-including-properties
+           (format "%-10s" (concat (propertize "01" 'face 'bold)
+                                   (propertize "23" 'face 'underline)
+                                   (propertize "45" 'face 'italic)))
+           #("012345    " 0 2 (face bold) 2 4 (face underline) 4 10 (face italic)))))