D2079: color: honor NO_COLOR

2018-02-15 Thread yuja (Yuya Nishihara)
yuja requested changes to this revision.
yuja added a comment.
This revision now requires changes to proceed.


  (just clarify the current state of this patch)

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2079

To: indygreg, #hg-reviewers, lothiraldan, yuja
Cc: durin42, martinvonz, yuja, quark, lothiraldan, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D2079: color: honor NO_COLOR

2018-02-10 Thread quark (Jun Wu)
quark added a subscriber: durin42.
quark added a comment.


  The goal was to allow users to override system default using environment 
variables. So a separate `[systemdefaults]` (proposed by @durin42) becomes 
unnecessary.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2079

To: indygreg, #hg-reviewers, lothiraldan
Cc: durin42, martinvonz, yuja, quark, lothiraldan, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D2079: color: honor NO_COLOR

2018-02-10 Thread martinvonz (Martin von Zweigbergk)
martinvonz added a comment.


  In https://phab.mercurial-scm.org/D2079#35154, @yuja wrote:
  
  > > I'm not sure if the precedence of settings is proper here.
  >
  > Perhaps it should be placed at the same level as `$EDITOR` (i.e. 
envrcitems)?
  
  
  I haven't bothered checking what that means for precedence, but I have an 
argument for giving NO_COLOR higher precedence than at least the system config: 
we set the system config for all our users at Google and some may want to 
override with NO_COLOR. I know someone (Jun? Yuya?) did some work related to 
precedence of EDITOR a while ago, but I don't remember what the goal of that 
was.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2079

To: indygreg, #hg-reviewers, lothiraldan
Cc: martinvonz, yuja, quark, lothiraldan, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D2079: color: honor NO_COLOR

2018-02-10 Thread yuja (Yuya Nishihara)
yuja added a comment.


  > I'm not sure if the precedence of settings is proper here.
  
  Perhaps it should be placed at the same level as `$EDITOR` (i.e. envrcitems)?
  
  And can you update help/color and environment?

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2079

To: indygreg, #hg-reviewers, lothiraldan
Cc: yuja, quark, lothiraldan, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D2079: color: honor NO_COLOR

2018-02-07 Thread quark (Jun Wu)
quark added a comment.


  You might want to let run-tests.py drop NO_COLOR for tests.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2079

To: indygreg, #hg-reviewers, lothiraldan
Cc: quark, lothiraldan, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D2079: color: honor NO_COLOR

2018-02-07 Thread lothiraldan (Boris Feld)
lothiraldan accepted this revision.
lothiraldan added a comment.


  👍 Hurrah for standards!

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2079

To: indygreg, #hg-reviewers, lothiraldan
Cc: lothiraldan, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D2079: color: honor NO_COLOR

2018-02-07 Thread indygreg (Gregory Szorc)
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  The http://no-color.org/ initiative is trying to get programs that
  emit color by default to honor a NO_COLOR environment variable to
  disable color.
  
  I think that's a good idea. So this commit implements support for
  NO_COLOR.
  
  I'm not sure if the precedence of settings is proper here. Right now,
  NO_COLOR overrides config settings set by hgrc or --config. But it
  doesn't override --color. I can see an argument for honoring
  --config as well. Same for hgrc (since color is enabled by default
  these days). But the existing logic/precedence is unclear to me. So
  I went with an easy implementation.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2079

AFFECTED FILES
  mercurial/color.py
  tests/test-status-color.t

CHANGE DETAILS

diff --git a/tests/test-status-color.t b/tests/test-status-color.t
--- a/tests/test-status-color.t
+++ b/tests/test-status-color.t
@@ -46,6 +46,42 @@
   [status.unknown|? ][status.unknown|b/in_b] (glob)
   [status.unknown|? ][status.unknown|in_root]
 
+NO_COLOR disables color
+
+  $ NO_COLOR=1 hg status
+  ? a/1/in_a_1
+  ? a/in_a
+  ? b/1/in_b_1
+  ? b/2/in_b_2
+  ? b/in_b
+  ? in_root
+
+  $ NO_COLOR=0 hg status
+  ? a/1/in_a_1
+  ? a/in_a
+  ? b/1/in_b_1
+  ? b/2/in_b_2
+  ? b/in_b
+  ? in_root
+
+  $ NO_COLOR= hg status
+  ? a/1/in_a_1
+  ? a/in_a
+  ? b/1/in_b_1
+  ? b/2/in_b_2
+  ? b/in_b
+  ? in_root
+
+NO_COLOR is overridden by --color
+
+  $ NO_COLOR=1 hg --color=always status
+  \x1b[0;35;1;4m? \x1b[0m\x1b[0;35;1;4ma/1/in_a_1\x1b[0m (esc)
+  \x1b[0;35;1;4m? \x1b[0m\x1b[0;35;1;4ma/in_a\x1b[0m (esc)
+  \x1b[0;35;1;4m? \x1b[0m\x1b[0;35;1;4mb/1/in_b_1\x1b[0m (esc)
+  \x1b[0;35;1;4m? \x1b[0m\x1b[0;35;1;4mb/2/in_b_2\x1b[0m (esc)
+  \x1b[0;35;1;4m? \x1b[0m\x1b[0;35;1;4mb/in_b\x1b[0m (esc)
+  \x1b[0;35;1;4m? \x1b[0m\x1b[0;35;1;4min_root\x1b[0m (esc)
+
 hg status with template
   $ hg status -T "{label('red', path)}\n" --color=debug
   [red|a/1/in_a_1]
diff --git a/mercurial/color.py b/mercurial/color.py
--- a/mercurial/color.py
+++ b/mercurial/color.py
@@ -198,6 +198,13 @@
 if config == 'debug':
 return 'debug'
 
+# The http://no-color.org/ initiative wants to standardize on an 
environment
+# variable to disable color. The value of this variable doesn't matter.
+if 'NO_COLOR' in encoding.environ:
+# Allow --color CLI argument to override NO_COLOR
+if ui.configsource('ui', 'color') != '--color':
+return None
+
 auto = (config == 'auto')
 always = False
 if not auto and util.parsebool(config):



To: indygreg, #hg-reviewers
Cc: mercurial-devel, spectral
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel