diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1872,6 +1872,7 @@ for section, name, value in ui.walkconfig(untrusted=untrusted): source = ui.configsource(section, name, untrusted) value = pycompat.bytestr(value) + defaultvalue = pycompat.bytestr(ui.configdefault(section, name)) if fm.isplain(): source = source or 'none' value = value.replace('\n', '\\n') @@ -1881,7 +1882,7 @@ fm.startitem() fm.condwrite(ui.debugflag, 'source', '%s: ', source) if uniquesel: - fm.data(name=entryname) + fm.data(name=entryname, defaultvalue=defaultvalue) fm.write('value', '%s\n', value) else: fm.write('name value', '%s=%s\n', entryname, value) diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -783,6 +783,17 @@ return None return default + def configdefault(self, section, name): + """returns the default value of the config item""" + item = self._knownconfig.get(section, {}).get(name) + itemdefault = None + if item is not None: + if callable(item.default): + itemdefault = item.default() + else: + itemdefault = item.default + return itemdefault + def hasconfig(self, section, name, untrusted=False): return self._data(untrusted).hasitem(section, name) diff --git a/tests/test-config.t b/tests/test-config.t --- a/tests/test-config.t +++ b/tests/test-config.t @@ -70,6 +70,7 @@ $ hg showconfig Section.KeY -Tjson [ { + "defaultvalue": "None", "name": "Section.KeY", "source": "*.hgrc:*", (glob) "value": "Case Sensitive" @@ -102,6 +103,7 @@ $ hg config empty.source -Tjson [ { + "defaultvalue": "None", "name": "empty.source", "source": "", "value": "value"