hgext/color.py
changeset 10989 9fb09fc3ea3c
parent 10871 3f30190781a3
child 11084 4a8d4179362b
--- a/hgext/color.py	Sun Apr 25 23:36:56 2010 +0200
+++ b/hgext/color.py	Fri Apr 23 14:29:44 2010 +0200
@@ -217,7 +217,7 @@
                             _("when to colorize (always, auto, or never)")))
 
 try:
-    import re
+    import re, pywintypes
     from win32console import *
 
     # http://msdn.microsoft.com/en-us/library/ms682088%28VS.85%29.aspx
@@ -243,7 +243,13 @@
     }
 
     stdout = GetStdHandle(STD_OUTPUT_HANDLE)
-    origattr = stdout.GetConsoleScreenBufferInfo()['Attributes']
+    try:
+        origattr = stdout.GetConsoleScreenBufferInfo()['Attributes']
+    except pywintypes.error:
+        # stdout may be defined but not support
+        # GetConsoleScreenBufferInfo(), when called from subprocess or
+        # redirected.
+        raise ImportError()
     ansire = re.compile('\033\[([^m]*)m([^\033]*)(.*)', re.MULTILINE | re.DOTALL)
 
     def win32print(text, orig, **opts):