templatekw: port implementation of showparents() from changeset_templater
It isn't cool, but we can peek at ui flag via repo.ui. So, it is possible
to implement showparents() in templatekw, and therefore we can eliminate the
dockeywords hack.
--- a/mercurial/cmdutil.py Sat Sep 26 12:32:03 2015 +0900
+++ b/mercurial/cmdutil.py Sat Sep 26 12:38:02 2015 +0900
@@ -1428,24 +1428,8 @@
def _show(self, ctx, copies, matchfn, props):
'''show a single changeset or file revision'''
-
- showlist = templatekw.showlist
-
- # showparents() behavior depends on ui trace level which
- # causes unexpected behaviors at templating level and makes
- # it harder to extract it in a standalone function. Its
- # behavior cannot be changed so leave it here for now.
- def showparents(**args):
- ctx = args['ctx']
- parents = [[('rev', p.rev()),
- ('node', p.hex()),
- ('phase', p.phasestr())]
- for p in scmutil.meaningfulparents(self.repo, ctx)]
- return showlist('parent', parents, **args)
-
props = props.copy()
props.update(templatekw.keywords)
- props['parents'] = showparents
props['templ'] = self.t
props['ctx'] = ctx
props['repo'] = self.repo
--- a/mercurial/templatekw.py Sat Sep 26 12:32:03 2015 +0900
+++ b/mercurial/templatekw.py Sat Sep 26 12:38:02 2015 +0900
@@ -397,11 +397,17 @@
parent, all digits are 0."""
return ctx.p2().hex()
-def _showparents(**args):
+def showparents(**args):
""":parents: List of strings. The parents of the changeset in "rev:node"
format. If the changeset has only one "natural" parent (the predecessor
revision) nothing is shown."""
- pass
+ repo = args['repo']
+ ctx = args['ctx']
+ parents = [[('rev', p.rev()),
+ ('node', p.hex()),
+ ('phase', p.phasestr())]
+ for p in scmutil.meaningfulparents(repo, ctx)]
+ return showlist('parent', parents, **args)
def showphase(repo, ctx, templ, **args):
""":phase: String. The changeset phase name."""
@@ -491,6 +497,7 @@
'p1node': showp1node,
'p2rev': showp2rev,
'p2node': showp2node,
+ 'parents': showparents,
'phase': showphase,
'phaseidx': showphaseidx,
'rev': showrev,
@@ -499,7 +506,6 @@
}
dockeywords = {
- 'parents': _showparents,
}
dockeywords.update(keywords)
del dockeywords['branches']