# HG changeset patch # User Augie Fackler # Date 1511893663 18000 # Node ID d4805a5e7e70d947aa8d1e85f8b27b42a9f9ac4a # Parent 3180ff7f60253ee1d6ae1f4608acb96c60adeef3 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 diff -r 3180ff7f6025 -r d4805a5e7e70 mercurial/color.py --- 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': diff -r 3180ff7f6025 -r d4805a5e7e70 mercurial/help/environment.txt --- 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`` diff -r 3180ff7f6025 -r d4805a5e7e70 tests/test-status-color.t --- 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