Skip to content

Commit 0f70db1

Browse files
committed
Set the default control mode based on environment variables: NO_COLOR and CLICOLOR_FORCE, in line with https://bixense.com/clicolors/
1 parent 22345aa commit 0f70db1

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

include/rang.hpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ enum class control { // Behaviour of rang function calls
113113
Force = 2 // force ansi color output to non terminal streams
114114
};
115115
// Use rang::setControlMode to set rang control mode
116+
// The default can be set by environment variables: https://bixense.com/clicolors/
117+
// NO_COLOR to disable color output, CLICOLOR_FORCE to force color output
116118

117119
enum class winTerm { // Windows Terminal Mode
118120
Auto = 0, // (Default) automatically detects wheter Ansi or Native API
@@ -126,7 +128,16 @@ namespace rang_implementation {
126128

127129
inline std::atomic<control> &controlMode() noexcept
128130
{
129-
static std::atomic<control> value(control::Auto);
131+
static std::atomic<control> value = [] {
132+
// https://bixense.com/clicolors/
133+
if (std::getenv("NO_COLOR") != nullptr) {
134+
return control::Off;
135+
}
136+
if (std::getenv("CLICOLOR_FORCE") != nullptr) {
137+
return control::Force;
138+
}
139+
return control::Auto;
140+
}();
130141
return value;
131142
}
132143

0 commit comments

Comments
 (0)