Commit b5936145 authored by Yuya Nishihara's avatar Yuya Nishihara
Browse files

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.
parent a0829ec34dbd
......@@ -313,6 +313,7 @@ def annotate(ui, repo, *pats, **opts):
lines = fctx.annotate(follow=follow, linenumber=linenumber,
diffopts=diffopts)
formats = []
pieces = []
for f, sep in funcmap:
......@@ -320,11 +321,13 @@ def annotate(ui, repo, *pats, **opts):
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])
formats.append([sep + ' ' * (ml - w) + '%s'
for x, w in sized])
pieces.append(l)
for p, l in zip(zip(*pieces), lines):
ui.write("%s: %s" % ("".join(p), l[1]))
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')
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment