# HG changeset patch # User Patrick Mezard # Date 1272025784 -7200 # Node ID 9fb09fc3ea3c28658133e6bd70f3abe6f8ec3612 # Parent f2340d699e79cefbc66630834465967255d2f6eb color: handle non-standard stdout on win32 diff -r f2340d699e79 -r 9fb09fc3ea3c hgext/color.py --- 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):