# HG changeset patch # User Yuya Nishihara # Date 2015-09-26 03:38:02 # Node ID 882b170ae6162d60e03d60009286d46fdbdb442f # Parent 0a823de8d7b7be69a10215bffc0153d3528a6e0a 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. diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1428,24 +1428,8 @@ class changeset_templater(changeset_prin 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 diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py --- a/mercurial/templatekw.py +++ b/mercurial/templatekw.py @@ -397,11 +397,17 @@ def showp2node(repo, ctx, templ, **args) 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 @@ keywords = { 'p1node': showp1node, 'p2rev': showp2rev, 'p2node': showp2node, + 'parents': showparents, 'phase': showphase, 'phaseidx': showphaseidx, 'rev': showrev, @@ -499,7 +506,6 @@ keywords = { } dockeywords = { - 'parents': _showparents, } dockeywords.update(keywords) del dockeywords['branches']