progress: use '%*d' to pad progress value
authorYuya Nishihara <yuya@tcha.org>
Wed, 14 Feb 2018 21:36:15 +0900
changeset 36202 707aba4d48b5
parent 36201 46260fac5563
child 36203 01280638bdb1
progress: use '%*d' to pad progress value Follows up 7f5108e58083. The problem of '% Nd' is that ' ' means we want {' ' or '-'} as a sign character. We should instead write '%Nd' to pad up to N characters with space, and N can be '*'.
mercurial/progress.py
--- a/mercurial/progress.py	Wed Feb 14 21:29:27 2018 +0900
+++ b/mercurial/progress.py	Wed Feb 14 21:36:15 2018 +0900
@@ -119,12 +119,7 @@
                 add = topic
             elif indicator == 'number':
                 if total:
-                    padamount = '%d' % len(str(total))
-                    # '% 1d' % 1 adds an extra space compared to '% 1s' % 1.
-                    # To avoid this change in output, we convert to a string
-                    # first, then do the padding.
-                    spos = '%d' % pos
-                    add = ('% '+ padamount + 's/%d') % (spos, total)
+                    add = b'%*d/%d' % (len(str(total)), pos, total)
                 else:
                     add = str(pos)
             elif indicator.startswith('item') and item: