diff mercurial/extensions.py @ 48362:7e6488aa1261

extensions: add a default "*" suboptions prefix This is similar to what we do in other section (e.g. `paths`) and allow to change the behavior for all extensions. Sub options on individual extensions overwrite the default settings. Differential Revision: https://phab.mercurial-scm.org/D11823
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 26 Nov 2021 17:22:14 +0100
parents 0d0ce2529540
children 6000f5b25c9b
line wrap: on
line diff
--- a/mercurial/extensions.py	Fri Nov 26 17:17:49 2021 +0100
+++ b/mercurial/extensions.py	Fri Nov 26 17:22:14 2021 +0100
@@ -291,6 +291,8 @@
     )
     ui.log(b'extension', b'- processing %d entries\n', len(result))
     with util.timedcm('load all extensions') as stats:
+        default_sub_options = ui.configsuboptions(b"extensions", b"*")[1]
+
         for (name, path) in result:
             if path:
                 if path[0:1] == b'!':
@@ -315,8 +317,10 @@
                     error_msg = _(b'failed to import extension "%s": %s')
                     error_msg %= (name, msg)
 
+                options = default_sub_options.copy()
                 ext_options = ui.configsuboptions(b"extensions", name)[1]
-                if stringutil.parsebool(ext_options.get(b"required", b'no')):
+                options.update(ext_options)
+                if stringutil.parsebool(options.get(b"required", b'no')):
                     hint = None
                     if isinstance(inst, error.Hint) and inst.hint:
                         hint = inst.hint