changeset 26435:882b170ae616

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.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 26 Sep 2015 12:38:02 +0900
parents 0a823de8d7b7
children a2291c9c85a1
files mercurial/cmdutil.py mercurial/templatekw.py
diffstat 2 files changed, 9 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- 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']