diff -r a9e92b11a3f2 -r 6f72e7d28b35 mercurial/extensions.py --- a/mercurial/extensions.py Mon Sep 23 11:37:06 2013 -0700 +++ b/mercurial/extensions.py Sat Sep 21 21:33:29 2013 +0900 @@ -13,10 +13,18 @@ _order = [] _ignore = ['hbisect', 'bookmarks', 'parentrevspec', 'interhg'] -def extensions(): +def extensions(ui=None): + if ui: + def enabled(name): + for format in ['%s', 'hgext.%s']: + conf = ui.config('extensions', format % name) + if conf is not None and not conf.startswith('!'): + return True + else: + enabled = lambda name: True for name in _order: module = _extensions[name] - if module: + if module and enabled(name): yield name, module def find(name):