# HG changeset patch # User Pierre-Yves David # Date 2017-06-17 16:43:27 # Node ID 6d983e8af49c391d464a0267395bf44267488e5a # Parent 0d757af1ea67894cc84d5b3cd36f9fd2c710180c configitems: introduce a central registry for config option We now have the appropriate infrastructure to register config items. Usage will added in the next changeset. diff --git a/mercurial/configitems.py b/mercurial/configitems.py --- a/mercurial/configitems.py +++ b/mercurial/configitems.py @@ -7,6 +7,10 @@ from __future__ import absolute_import +from . import ( + error, +) + class configitem(object): """represent a known config item @@ -19,3 +23,13 @@ class configitem(object): self.section = section self.name = name self.default = default + +coreitems = {} + +def coreconfigitem(*args, **kwargs): + item = configitem(*args, **kwargs) + section = coreitems.setdefault(item.section, {}) + if item.name in section: + msg = "duplicated config item registration for '%s.%s'" + raise error.ProgrammingError(msg % (item.section, item.name)) + section[item.name] = item diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -27,6 +27,7 @@ from .node import hex from . import ( color, config, + configitems, encoding, error, formatter, @@ -178,6 +179,7 @@ class ui(object): self._bufferapplylabels = None self.quiet = self.verbose = self.debugflag = self.tracebackflag = False self._reportuntrusted = True + self._knownconfig = configitems.coreitems self._ocfg = config.config() # overlay self._tcfg = config.config() # trusted self._ucfg = config.config() # untrusted