diff mercurial/dispatch.py @ 11555:d8d0fc3988ca stable

color/progress: subclass ui instead of using wrapfunction (issue2096) This resolves the issue of hg cmd --mq not being colorized. This was due to color wrapping only the instance of ui passed to dispatch._runcommand(), which isn't the same ui object that mq.mqcommand() receives. After dispatch calls extensions.loadall(), it makes sure any changes to ui.__class__ in uisetup are propagated. progress is updated to wrap ui in the same manner because wrapfunction doesn't play well when ui.__class__ has been replaced by another extension (orig will point to the old class method instead of color's).
author Brodie Rao <brodie@bitheap.org>
date Thu, 01 Jul 2010 19:23:26 -0500
parents 713ae78bb583
children c20c2c4c0c63 76454cbc11e4
line wrap: on
line diff
--- a/mercurial/dispatch.py	Wed Jul 14 19:43:31 2010 +0200
+++ b/mercurial/dispatch.py	Thu Jul 01 19:23:26 2010 -0500
@@ -388,6 +388,8 @@
     # times so we keep track of configured extensions in _loaded.
     extensions.loadall(lui)
     exts = [ext for ext in extensions.extensions() if ext[0] not in _loaded]
+    # Propagate any changes to lui.__class__ by extensions
+    ui.__class__ = lui.__class__
 
     # (uisetup and extsetup are handled in extensions.loadall)