mercurial/ui.py
branchstable
changeset 34947 ff2110eadbfa
parent 34882 e9f320a40b44
child 34957 58e7791e243b
child 35170 c9740b69b9b7
--- a/mercurial/ui.py	Thu Oct 26 11:07:06 2017 -0700
+++ b/mercurial/ui.py	Tue Oct 31 22:37:30 2017 +0900
@@ -471,12 +471,16 @@
         return value
 
     def _config(self, section, name, default=_unset, untrusted=False):
-        value = default
+        value = itemdefault = default
         item = self._knownconfig.get(section, {}).get(name)
         alternates = [(section, name)]
 
         if item is not None:
             alternates.extend(item.alias)
+            if callable(item.default):
+                itemdefault = item.default()
+            else:
+                itemdefault = item.default
         else:
             msg = ("accessing unregistered config item: '%s.%s'")
             msg %= (section, name)
@@ -490,13 +494,12 @@
                 msg = "config item requires an explicit default value: '%s.%s'"
                 msg %= (section, name)
                 self.develwarn(msg, 2, 'warn-config-default')
-            elif callable(item.default):
-                    value = item.default()
             else:
-                value = item.default
+                value = itemdefault
         elif (item is not None
-              and item.default is not configitems.dynamicdefault):
-            msg = ("specifying a default value for a registered "
+              and item.default is not configitems.dynamicdefault
+              and default != itemdefault):
+            msg = ("specifying a mismatched default value for a registered "
                    "config item: '%s.%s' '%s'")
             msg %= (section, name, default)
             self.develwarn(msg, 2, 'warn-config-default')