mercurial/cmdutil.py
changeset 35473 f1c54d003327
parent 35472 32c278eb876f
child 35487 817a3d20dd01
equal deleted inserted replaced
35472:32c278eb876f 35473:f1c54d003327
  1841     def __init__(self, ui, repo, tmplspec, matchfn=None, diffopts=None,
  1841     def __init__(self, ui, repo, tmplspec, matchfn=None, diffopts=None,
  1842                  buffered=False):
  1842                  buffered=False):
  1843         diffopts = diffopts or {}
  1843         diffopts = diffopts or {}
  1844 
  1844 
  1845         changeset_printer.__init__(self, ui, repo, matchfn, diffopts, buffered)
  1845         changeset_printer.__init__(self, ui, repo, matchfn, diffopts, buffered)
  1846         self.t = formatter.loadtemplater(ui, tmplspec,
  1846         tres = formatter.templateresources(ui, repo)
       
  1847         self.t = formatter.loadtemplater(ui, tmplspec, resources=tres,
  1847                                          cache=templatekw.defaulttempl)
  1848                                          cache=templatekw.defaulttempl)
  1848         self._counter = itertools.count()
  1849         self._counter = itertools.count()
  1849         self.cache = {}
  1850         self.cache = tres['cache']  # shared with _graphnodeformatter()
  1850 
  1851 
  1851         self._tref = tmplspec.ref
  1852         self._tref = tmplspec.ref
  1852         self._parts = {'header': '', 'footer': '',
  1853         self._parts = {'header': '', 'footer': '',
  1853                        tmplspec.ref: tmplspec.ref,
  1854                        tmplspec.ref: tmplspec.ref,
  1854                        'docheader': '', 'docfooter': '',
  1855                        'docheader': '', 'docfooter': '',
  1885     def _show(self, ctx, copies, matchfn, hunksfilterfn, props):
  1886     def _show(self, ctx, copies, matchfn, hunksfilterfn, props):
  1886         '''show a single changeset or file revision'''
  1887         '''show a single changeset or file revision'''
  1887         props = props.copy()
  1888         props = props.copy()
  1888         props.update(templatekw.keywords)
  1889         props.update(templatekw.keywords)
  1889         props['ctx'] = ctx
  1890         props['ctx'] = ctx
  1890         props['repo'] = self.repo
       
  1891         props['ui'] = self.repo.ui
       
  1892         props['index'] = index = next(self._counter)
  1891         props['index'] = index = next(self._counter)
  1893         props['revcache'] = {'copies': copies}
  1892         props['revcache'] = {'copies': copies}
  1894         props['cache'] = self.cache
       
  1895         props = pycompat.strkwargs(props)
  1893         props = pycompat.strkwargs(props)
  1896 
  1894 
  1897         # write separator, which wouldn't work well with the header part below
  1895         # write separator, which wouldn't work well with the header part below
  1898         # since there's inherently a conflict between header (across items) and
  1896         # since there's inherently a conflict between header (across items) and
  1899         # separator (per item)
  1897         # separator (per item)
  2655     spec = ui.config('ui', 'graphnodetemplate')
  2653     spec = ui.config('ui', 'graphnodetemplate')
  2656     if not spec:
  2654     if not spec:
  2657         return templatekw.showgraphnode  # fast path for "{graphnode}"
  2655         return templatekw.showgraphnode  # fast path for "{graphnode}"
  2658 
  2656 
  2659     spec = templater.unquotestring(spec)
  2657     spec = templater.unquotestring(spec)
  2660     templ = formatter.maketemplater(ui, spec)
  2658     tres = formatter.templateresources(ui)
  2661     cache = {}
       
  2662     if isinstance(displayer, changeset_templater):
  2659     if isinstance(displayer, changeset_templater):
  2663         cache = displayer.cache  # reuse cache of slow templates
  2660         tres['cache'] = displayer.cache  # reuse cache of slow templates
       
  2661     templ = formatter.maketemplater(ui, spec, resources=tres)
  2664     props = templatekw.keywords.copy()
  2662     props = templatekw.keywords.copy()
  2665     props['cache'] = cache
       
  2666     def formatnode(repo, ctx):
  2663     def formatnode(repo, ctx):
  2667         props['ctx'] = ctx
  2664         props['ctx'] = ctx
  2668         props['repo'] = repo
  2665         props['repo'] = repo
  2669         props['ui'] = repo.ui
       
  2670         props['revcache'] = {}
  2666         props['revcache'] = {}
  2671         return templ.render(props)
  2667         return templ.render(props)
  2672     return formatnode
  2668     return formatnode
  2673 
  2669 
  2674 def displaygraph(ui, repo, dag, displayer, edgefn, getrenamed=None,
  2670 def displaygraph(ui, repo, dag, displayer, edgefn, getrenamed=None,