# HG changeset patch # User Yuya Nishihara # Date 2018-07-29 12:28:51 # Node ID 918944f53aac968b96e2118c1376eba659736873 # Parent b1239aeef4d929f73e986f4a06c7acb1969198eb templatekw: add {size} keyword as an example of fctx-based keyword I'll add {status}, and I think some lfs keywords can be migrated to this. I'm not certain how many fctx-based keywords will be introduced into the global space, but if there are a couple more, we'll probably need to sort them out to the "File Keywords" section in the templater help. Until then, fctx keywords are hidden as experimental. diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py --- a/mercurial/templatekw.py +++ b/mercurial/templatekw.py @@ -582,6 +582,12 @@ def showreporoot(context, mapping): repo = context.resource(mapping, 'repo') return repo.root +@templatekeyword('size', requires={'fctx'}) +def showsize(context, mapping): + """Integer. Size of the current file in bytes. (EXPERIMENTAL)""" + fctx = context.resource(mapping, 'fctx') + return fctx.size() + @templatekeyword("successorssets", requires={'repo', 'ctx'}) def showsuccessorssets(context, mapping): """Returns a string of sets of successors for a changectx. Format used diff --git a/tests/test-template-keywords.t b/tests/test-template-keywords.t --- a/tests/test-template-keywords.t +++ b/tests/test-template-keywords.t @@ -787,6 +787,15 @@ Test file copies dict: $ hg log -r8 -C -T '{file_copies_switch % "{path} <- {source}\n"}' fourth <- second +Test file attributes: + + $ hg log -l1 -T '{files % "{pad(size, 3, left=True)} {path}\n"}' + a + 0 b + 7 fifth + fourth + 13 third + Test index keyword: $ hg log -l 2 -T '{index + 10}{files % " {index}:{file}"}\n'