diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1580,15 +1580,8 @@ class changeset_templater(changeset_prin def __init__(self, ui, repo, matchfn, diffopts, tmpl, mapfile, buffered): changeset_printer.__init__(self, ui, repo, matchfn, diffopts, buffered) - assert not (tmpl and mapfile) - defaulttempl = templatekw.defaulttempl - if mapfile: - self.t = templater.templater.frommapfile(mapfile, - cache=defaulttempl) - else: - self.t = formatter.maketemplater(ui, 'changeset', tmpl, - cache=defaulttempl) - + self.t = formatter.loadtemplater(ui, 'changeset', (tmpl, mapfile), + cache=templatekw.defaulttempl) self._counter = itertools.count() self.cache = {} diff --git a/mercurial/formatter.py b/mercurial/formatter.py --- a/mercurial/formatter.py +++ b/mercurial/formatter.py @@ -408,6 +408,12 @@ def lookuptemplate(ui, topic, tmpl): def gettemplater(ui, topic, spec, cache=None): tmpl, mapfile = lookuptemplate(ui, topic, spec) + return loadtemplater(ui, topic, (tmpl, mapfile), cache=cache) + +def loadtemplater(ui, topic, spec, cache=None): + """Create a templater from either a literal template or loading from + a map file""" + tmpl, mapfile = spec assert not (tmpl and mapfile) if mapfile: return templater.templater.frommapfile(mapfile, cache=cache)