@@ -21,10 +21,17 @@ public static class XConsole
21
21
{
22
22
private static readonly object _syncLock = new ( ) ;
23
23
private static readonly string _newLine = Environment . NewLine ;
24
+ private static bool _colorsEnabled = Environment . GetEnvironmentVariable ( "NO_COLOR" ) == null ;
24
25
private static bool _cursorVisible = Console . CursorVisible ;
25
26
private static int _maxTop = Console . BufferHeight - 1 ;
26
27
internal static long ShiftTop = 0 ;
27
28
29
+ public static bool NO_COLOR
30
+ {
31
+ get => ! _colorsEnabled ;
32
+ set => _colorsEnabled = ! value ;
33
+ }
34
+
28
35
public static void Sync ( Action action )
29
36
{
30
37
lock ( _syncLock )
@@ -745,43 +752,49 @@ public static (XConsolePosition Begin, XConsolePosition End) WriteLine(ulong val
745
752
746
753
private static void WriteItems ( IReadOnlyList < XConsoleItem > items )
747
754
{
748
- foreach ( var item in items )
755
+ if ( _colorsEnabled )
749
756
{
750
- if ( item . BackColor == XConsoleItem . NoColor )
757
+ foreach ( var item in items )
751
758
{
752
- if ( item . ForeColor == XConsoleItem . NoColor )
759
+ if ( item . BackColor == XConsoleItem . NoColor )
753
760
{
754
- Console . Write ( item . Value ) ;
755
- }
756
- else
757
- {
758
- var origForeColor = Console . ForegroundColor ;
759
- Console . ForegroundColor = item . ForeColor ;
760
- Console . Write ( item . Value ) ;
761
- Console . ForegroundColor = origForeColor ;
762
- }
763
- }
764
- else
765
- {
766
- if ( item . ForeColor == XConsoleItem . NoColor )
767
- {
768
- var origBackColor = Console . BackgroundColor ;
769
- Console . BackgroundColor = item . BackColor ;
770
- Console . Write ( item . Value ) ;
771
- Console . BackgroundColor = origBackColor ;
761
+ if ( item . ForeColor == XConsoleItem . NoColor )
762
+ {
763
+ Console . Write ( item . Value ) ;
764
+ }
765
+ else
766
+ {
767
+ var origForeColor = Console . ForegroundColor ;
768
+ Console . ForegroundColor = item . ForeColor ;
769
+ Console . Write ( item . Value ) ;
770
+ Console . ForegroundColor = origForeColor ;
771
+ }
772
772
}
773
773
else
774
774
{
775
- var origBackColor = Console . BackgroundColor ;
776
- var origForeColor = Console . ForegroundColor ;
777
- Console . BackgroundColor = item . BackColor ;
778
- Console . ForegroundColor = item . ForeColor ;
779
- Console . Write ( item . Value ) ;
780
- Console . BackgroundColor = origBackColor ;
781
- Console . ForegroundColor = origForeColor ;
775
+ if ( item . ForeColor == XConsoleItem . NoColor )
776
+ {
777
+ var origBackColor = Console . BackgroundColor ;
778
+ Console . BackgroundColor = item . BackColor ;
779
+ Console . Write ( item . Value ) ;
780
+ Console . BackgroundColor = origBackColor ;
781
+ }
782
+ else
783
+ {
784
+ var origBackColor = Console . BackgroundColor ;
785
+ var origForeColor = Console . ForegroundColor ;
786
+ Console . BackgroundColor = item . BackColor ;
787
+ Console . ForegroundColor = item . ForeColor ;
788
+ Console . Write ( item . Value ) ;
789
+ Console . BackgroundColor = origBackColor ;
790
+ Console . ForegroundColor = origForeColor ;
791
+ }
782
792
}
783
793
}
784
794
}
795
+ else
796
+ foreach ( var item in items )
797
+ Console . Write ( item . Value ) ;
785
798
}
786
799
787
800
private static int GetLineWrapCount ( IReadOnlyList < XConsoleItem > items , int beginLeft )
@@ -855,8 +868,9 @@ public static ConsoleColor BackgroundColor
855
868
}
856
869
set
857
870
{
858
- lock ( _syncLock )
859
- Console . BackgroundColor = value ;
871
+ if ( _colorsEnabled )
872
+ lock ( _syncLock )
873
+ Console . BackgroundColor = value ;
860
874
}
861
875
}
862
876
@@ -952,8 +966,9 @@ public static ConsoleColor ForegroundColor
952
966
}
953
967
set
954
968
{
955
- lock ( _syncLock )
956
- Console . ForegroundColor = value ;
969
+ if ( _colorsEnabled )
970
+ lock ( _syncLock )
971
+ Console . ForegroundColor = value ;
957
972
}
958
973
}
959
974
0 commit comments