Mercurial > hg
changeset 22477:3c8ae79eacb0
annotate: build format string separately from annotation data
This prepares for porting to generic templater API.
Note that we cannot use '%*s' to pad white spaces because it doesn't take
into account character widths, as described in 4f5a6df2af92.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 29 Aug 2014 05:36:52 +0200 |
parents | a0829ec34dbd |
children | a6b1413511f1 |
files | mercurial/commands.py |
diffstat | 1 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Wed Sep 17 22:21:01 2014 +0900 +++ b/mercurial/commands.py Fri Aug 29 05:36:52 2014 +0200 @@ -313,6 +313,7 @@ lines = fctx.annotate(follow=follow, linenumber=linenumber, diffopts=diffopts) + formats = [] pieces = [] for f, sep in funcmap: @@ -320,11 +321,13 @@ if l: sized = [(x, encoding.colwidth(x)) for x in l] ml = max([w for x, w in sized]) - pieces.append(["%s%s%s" % (sep, ' ' * (ml - w), x) - for x, w in sized]) - - for p, l in zip(zip(*pieces), lines): - ui.write("%s: %s" % ("".join(p), l[1])) + formats.append([sep + ' ' * (ml - w) + '%s' + for x, w in sized]) + pieces.append(l) + + for f, p, l in zip(zip(*formats), zip(*pieces), lines): + ui.write("".join(f) % p) + ui.write(": %s" % l[1]) if lines and not lines[-1][1].endswith('\n'): ui.write('\n')