Mercurial > hg
changeset 29812:01f036f0e40b
templater: add inheritance support to style maps
We can now specify a base map file:
__base__ = path/to/map/file
That map file will be read and used to populate unset elements of the
current map. Unlike using %include, elements in the inherited class
will be read relative to that path.
This makes it much easier to make custom local tweaks to a style.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 17 Aug 2016 13:40:27 -0500 |
parents | 4ddfb730789d |
children | 5f86818c95e5 |
files | mercurial/templater.py |
diffstat | 1 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/templater.py Thu Aug 18 18:43:48 2016 +0900 +++ b/mercurial/templater.py Wed Aug 17 13:40:27 2016 -0500 @@ -1026,6 +1026,16 @@ raise error.ParseError(_('unmatched quotes'), conf.source('', key)) cache[key] = unquotestring(val) + elif key == "__base__": + # treat as a pointer to a base class for this style + path = util.normpath(os.path.join(base, val)) + bcache, btmap = _readmapfile(path) + for k in bcache: + if k not in cache: + cache[k] = bcache[k] + for k in btmap: + if k not in tmap: + tmap[k] = btmap[k] else: val = 'default', val if ':' in val[1]: