changeset 10058:c829563b3118

cmdutil: extract file copies closure into templatekw
author Patrick Mezard <pmezard@gmail.com>
date Sun, 13 Dec 2009 18:06:24 +0100
parents babc00a82c5e
children 9dd4e2859482
files mercurial/cmdutil.py mercurial/templatekw.py
diffstat 2 files changed, 11 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Sun Dec 13 18:06:24 2009 +0100
+++ b/mercurial/cmdutil.py	Sun Dec 13 18:06:24 2009 +0100
@@ -786,26 +786,22 @@
 
         showlist = templatekw.showlist
 
+        # showparents() behaviour depends on ui trace level which
+        # causes unexpected behaviours at templating level and makes
+        # it harder to extract it in a standalone function. Its
+        # behaviour cannot be changed so leave it here for now.
         def showparents(repo, ctx, templ, **args):
             parents = [[('rev', p.rev()), ('node', p.hex())]
                        for p in self._meaningful_parentrevs(ctx)]
             return showlist(templ, 'parent', parents, **args)
 
-        def showcopies(repo, ctx, templ, **args):
-            c = [{'name': x[0], 'source': x[1]} for x in copies]
-            return showlist(templ, 'file_copy', c, plural='file_copies', **args)
-
-        defprops = {
-            'file_copies': showcopies,            
-            'parents': showparents,            
-            }
         props = props.copy()
         props.update(templatekw.keywords)
-        props.update(defprops)
+        props['parents'] = showparents
         props['templ'] = self.t
         props['ctx'] = ctx
         props['repo'] = self.repo
-        props['revcache'] = {}
+        props['revcache'] = {'copies': copies}
         props['cache'] = self.cache
 
         # find correct templates for current mode
--- a/mercurial/templatekw.py	Sun Dec 13 18:06:24 2009 +0100
+++ b/mercurial/templatekw.py	Sun Dec 13 18:06:24 2009 +0100
@@ -141,6 +141,10 @@
 def showfileadds(repo, ctx, templ, revcache, **args):
     return showlist(templ, 'file_add', getfiles(repo, ctx, revcache)[1], **args)
 
+def showfilecopies(repo, ctx, templ, revcache, **args):
+    c = [{'name': x[0], 'source': x[1]} for x in revcache['copies']]
+    return showlist(templ, 'file_copy', c, plural='file_copies', **args)
+
 def showfiledels(repo, ctx, templ, revcache, **args):
     return showlist(templ, 'file_del', getfiles(repo, ctx, revcache)[2], **args)
 
@@ -179,6 +183,7 @@
     'diffstat': showdiffstat,
     'extras': showextras,
     'file_adds': showfileadds,
+    'file_copies': showfilecopies,
     'file_dels': showfiledels,
     'file_mods': showfilemods,
     'files': showfiles,