summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2016-07-09 11:01:17 +0300
committerEli Zaretskii <eliz@gnu.org>2016-07-09 11:01:17 +0300
commit0a2aedfe6d650e825a50f25f972bac20d669f5cb (patch)
tree28e53a5fc20ec6531b6f5179a09d4f503e317345
parente52ad7fdfc7148a75897c92588712169894f7a5c (diff)
Minor tweaks of copying text properties when padding strings
* 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.
-rw-r--r--src/editfns.c2
-rw-r--r--test/src/editfns-tests.el28
2 files changed, 27 insertions, 3 deletions
diff --git a/src/editfns.c b/src/editfns.c
index 73f024409b..4c8336b8c8 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -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
diff --git a/test/src/editfns-tests.el b/test/src/editfns-tests.el
index 62d7bc4f5b..507ceef2f7 100644
--- a/test/src/editfns-tests.el
+++ b/test/src/editfns-tests.el
@@ -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
@@ -64,4 +64,28 @@
(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)))))