Added check for COLORTERM environment variable to detect if terminal

supports color.
Added alacritty to supported color terminals.
This commit is contained in:
dominic 2020-12-19 23:22:31 +01:00
parent 55bfa8dd11
commit cec365888a

View File

@ -397,17 +397,26 @@ SPDLOG_INLINE bool is_color_terminal() SPDLOG_NOEXCEPT
#ifdef _WIN32 #ifdef _WIN32
return true; return true;
#else #else
static constexpr std::array<const char *, 14> terms = {
{"ansi", "color", "console", "cygwin", "gnome", "konsole", "kterm", "linux", "msys", "putty", "rxvt", "screen", "vt100", "xterm"}};
const char *env_p = std::getenv("TERM"); static const bool result = []() {
if (env_p == nullptr) const char *env_colorterm_p = std::getenv("COLORTERM");
{ if (env_colorterm_p != nullptr)
return false; {
} return true;
}
static constexpr std::array<const char *, 15> terms = {{"ansi", "color", "console", "cygwin", "gnome", "konsole", "kterm", "linux",
"msys", "putty", "rxvt", "screen", "vt100", "xterm", "alacritty"}};
const char *env_term_p = std::getenv("TERM");
if (env_term_p == nullptr)
{
return false;
}
return std::any_of(terms.begin(), terms.end(), [&](const char *term) { return std::strstr(env_term_p, term) != nullptr; });
}();
static const bool result =
std::any_of(terms.begin(), terms.end(), [&](const char *term) { return std::strstr(env_p, term) != nullptr; });
return result; return result;
#endif #endif
} }