Mercurial > hg
changeset 10989:9fb09fc3ea3c
color: handle non-standard stdout on win32
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Fri, 23 Apr 2010 14:29:44 +0200 |
parents | f2340d699e79 |
children | 11569b997f81 |
files | hgext/color.py |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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):