# HG changeset patch # User Yuya Nishihara # Date 1507972002 -32400 # Node ID f17a0e18c47e6519d5816e2c538f285f1baf7760 # Parent f4aeb952ab77c25525f76b0cedecc5b2e4b3e975 templater: load aliases from [templatealias] section in map file This seems sometimes useful as an alias can be a function, but a template fragment can't. diff -r f4aeb952ab77 -r f17a0e18c47e mercurial/formatter.py --- a/mercurial/formatter.py Sat Oct 14 17:51:01 2017 +0900 +++ b/mercurial/formatter.py Sat Oct 14 18:06:42 2017 +0900 @@ -418,8 +418,8 @@ A map file defines a stand-alone template environment. If a map file selected, all templates defined in the file will be loaded, and the - template matching the given topic will be rendered. No aliases will be - loaded from user config. + template matching the given topic will be rendered. Aliases won't be + loaded from user config, but from the map file. If no map file selected, all templates in [templates] section will be available as well as aliases in [templatealias]. diff -r f4aeb952ab77 -r f17a0e18c47e mercurial/templater.py --- a/mercurial/templater.py Sat Oct 14 17:51:01 2017 +0900 +++ b/mercurial/templater.py Sat Oct 14 18:06:42 2017 +0900 @@ -1344,6 +1344,7 @@ cache = {} tmap = {} + aliases = [] val = conf.get('templates', '__base__') if val and val[0] not in "'\"": @@ -1362,7 +1363,7 @@ path = p3 break - cache, tmap = _readmapfile(path) + cache, tmap, aliases = _readmapfile(path) for key, val in conf['templates'].items(): if not val: @@ -1378,7 +1379,8 @@ if ':' in val[1]: val = val[1].split(':', 1) tmap[key] = val[0], os.path.join(base, val[1]) - return cache, tmap + aliases.extend(conf['templatealias'].items()) + return cache, tmap, aliases class TemplateNotFound(error.Abort): pass @@ -1412,9 +1414,10 @@ minchunk=1024, maxchunk=65536): """Create templater from the specified map file""" t = cls(filters, defaults, cache, [], minchunk, maxchunk) - cache, tmap = _readmapfile(mapfile) + cache, tmap, aliases = _readmapfile(mapfile) t.cache.update(cache) t.map = tmap + t._aliases = aliases return t def __contains__(self, key): diff -r f4aeb952ab77 -r f17a0e18c47e tests/test-command-template.t --- a/tests/test-command-template.t Sat Oct 14 17:51:01 2017 +0900 +++ b/tests/test-command-template.t Sat Oct 14 18:06:42 2017 +0900 @@ -259,11 +259,13 @@ $ hg log -l1 -T./map-simple 8 - a map file may have [templates] section: + a map file may have [templates] and [templatealias] sections: $ cat <<'EOF' > map-simple > [templates] - > changeset = "{rev}\n" + > changeset = "{a}\n" + > [templatealias] + > a = rev > EOF $ hg log -l1 -T./map-simple 8 @@ -277,6 +279,8 @@ > EOF $ HGRCPATH=./myhgrc hg log -l1 -Tfoo 8 + $ HGRCPATH=./myhgrc hg log -l1 -T'{a}\n' + 8 Test template map inheritance