color: respect HGPLAINEXCEPT=color to allow colors while scripting (
issue5749)
I'd also like --color=always on the command-line to override HGPLAIN=1
et al, but that's more work, and this seems like a better fix. We've
got a fair number of programs that actually want to automate hg and
get colored output to users, so they should set HGPLAINEXCEPT=alias
(what we usually recommend), but this has been breaking them because
they then lose color.
.. feature::
The ``HGPLAINEXCEPT`` environment variable can now include ``color``
to allow automatic output colorization in otherwise automated
environments.
Differential Revision: https://phab.mercurial-scm.org/D1532
--- a/mercurial/color.py Sun Nov 26 11:22:27 2017 +0900
+++ b/mercurial/color.py Tue Nov 28 13:27:43 2017 -0500
@@ -181,7 +181,7 @@
configstyles(ui)
def _modesetup(ui):
- if ui.plain():
+ if ui.plain('color'):
return None
config = ui.config('ui', 'color')
if config == 'debug':
--- a/mercurial/help/environment.txt Sun Nov 26 11:22:27 2017 +0900
+++ b/mercurial/help/environment.txt Tue Nov 28 13:27:43 2017 -0500
@@ -65,6 +65,8 @@
``alias``
Don't remove aliases.
+ ``color``
+ Don't disable colored output.
``i18n``
Preserve internationalization.
``revsetalias``
--- a/tests/test-status-color.t Sun Nov 26 11:22:27 2017 +0900
+++ b/tests/test-status-color.t Tue Nov 28 13:27:43 2017 -0500
@@ -29,6 +29,22 @@
[status.unknown|? ][status.unknown|b/2/in_b_2]
[status.unknown|? ][status.unknown|b/in_b]
[status.unknown|? ][status.unknown|in_root]
+HGPLAIN disables color
+ $ HGPLAIN=1 hg status --color=debug
+ ? a/1/in_a_1
+ ? a/in_a
+ ? b/1/in_b_1
+ ? b/2/in_b_2
+ ? b/in_b
+ ? in_root
+HGPLAINEXCEPT=color does not disable color
+ $ HGPLAINEXCEPT=color hg status --color=debug
+ [status.unknown|? ][status.unknown|a/1/in_a_1]
+ [status.unknown|? ][status.unknown|a/in_a]
+ [status.unknown|? ][status.unknown|b/1/in_b_1]
+ [status.unknown|? ][status.unknown|b/2/in_b_2]
+ [status.unknown|? ][status.unknown|b/in_b]
+ [status.unknown|? ][status.unknown|in_root]
hg status with template
$ hg status -T "{label('red', path)}\n" --color=debug