[PATCH 2 of 3] color: enable ANSI support on Windows 10

Matt Harbison mharbison72 at gmail.com
Tue May 23 08:34:14 EDT 2017


# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1495506038 14400
#      Mon May 22 22:20:38 2017 -0400
# Node ID 95ef3de9a9883c388dc80bb841fd0f7c41dac06a
# Parent  58dbbf67bd726092374403b2805d9ef9f5118ebe
color: enable ANSI support on Windows 10

This will display color if "color.mode=ansi", and default to 'ansi' if the mode
is set to 'auto'.  The 'debugcolor' command also reflects this policy.
Previously, "color.mode=ansi" mode on Windows printed jibberish around the
normal text.  Using ANSI color is better, as it avoids the normal loss of color
when the default pager is enabled on Windows.  See also issue5570.

When the underlying function fails (e.g. when run on older Windows), 'auto'
still falls back to 'win32'.

diff --git a/mercurial/color.py b/mercurial/color.py
--- a/mercurial/color.py
+++ b/mercurial/color.py
@@ -227,12 +227,15 @@
             # gibberish, we error on the side of selecting "win32". However, if
             # w32effects is not defined, we almost certainly don't support
             # "win32", so don't even try.
-            if (term and 'xterm' in term) or not w32effects:
+            if ((term and 'xterm' in term) or util.enablevtmode()
+                 or not w32effects):
                 realmode = 'ansi'
             else:
                 realmode = 'win32'
         else:
             realmode = 'ansi'
+    elif mode =='ansi':
+        util.enablevtmode()
 
     def modewarn():
         # only warn if color.mode was explicitly set and we're in


More information about the Mercurial-devel mailing list