color: use ui.formatted() to test TTYness, not sys.stdout.isatty()
authorBrodie Rao <brodie@bitheap.org>
Sun, 01 May 2011 12:14:22 +0200
changeset 14103 a36e8c99d51c
parent 14102 7f45b1911893
child 14127 f45c8db21749
color: use ui.formatted() to test TTYness, not sys.stdout.isatty() This fixes the color extension not working with pager (broken in 877390020477). The pager extension already sets ui.formatted=True to allow this use case.
hgext/color.py
--- a/hgext/color.py	Sun May 01 11:12:36 2011 +0200
+++ b/hgext/color.py	Sun May 01 12:14:22 2011 +0200
@@ -301,13 +301,15 @@
     global _terminfo_params
     if ui.plain():
         return
+
+    formatted = (os.environ.get('TERM') != 'dumb' and ui.formatted())
     mode = ui.config('color', 'mode', 'auto')
     if mode == 'auto':
         if os.name == 'nt' and 'TERM' not in os.environ:
             # looks line a cmd.exe console, use win32 API or nothing
             mode = w32effects and 'win32' or 'none'
         else:
-            if getattr(sys.stdout, 'isatty', None) and sys.stdout.isatty():
+            if not formatted:
                 _terminfo_params = False
             else:
                 _terminfosetup(ui)
@@ -332,8 +334,7 @@
         auto = coloropt == 'auto'
         always = util.parsebool(coloropt)
         if (always or
-            (always is None and
-             (auto and (os.environ.get('TERM') != 'dumb' and ui_.formatted())))):
+            (always is None and auto and formatted)):
             colorui._colormode = mode
             colorui.__bases__ = (ui_.__class__,)
             ui_.__class__ = colorui