# HG changeset patch # User Martin von Zweigbergk # Date 2020-07-22 07:09:17 # Node ID 4ccd5ec565c2baaa1d598b20a7ea14d3c4fd39dc # Parent 8ec3062b7047ceb02c5136afda624e2596c0b7f6 templater: do search for include of unqualified builtin outside of config code Commit 081b08e4ea13 (templater: look for mapfiles in template paths, 2015-05-15) added support for using things like `%include map-cmdline.default` to include built-in map files without using a valid path to them. This patch rewrites that support by moving it into `_readmapfile()` so it can later be adapted for reading from a non-file resource. Differential Revision: https://phab.mercurial-scm.org/D8792 diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -823,11 +823,18 @@ def _readmapfile(mapfile): ) base = os.path.dirname(mapfile) - conf = config.config(includepaths=[templatedir()]) + conf = config.config() def include(rel, abs, remap, sections): - data = util.posixfile(abs, b'rb').read() - conf.parse(abs, data, sections=sections, remap=remap, include=include) + templatedirs = [base, templatedir()] + for dir in templatedirs: + abs = os.path.normpath(os.path.join(dir, rel)) + if os.path.isfile(abs): + data = util.posixfile(abs, b'rb').read() + conf.parse( + abs, data, sections=sections, remap=remap, include=include + ) + break data = util.posixfile(mapfile, b'rb').read() conf.parse(mapfile, data, remap={b'': b'templates'}, include=include)