mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 15:18:49 +00:00
Merge pull request #2622 from laytan/detect-unix-colors-support
detect unix color support
This commit is contained in:
+23
-1
@@ -2549,6 +2549,22 @@ gb_internal int strip_semicolons(Parser *parser) {
|
|||||||
|
|
||||||
gb_internal void init_terminal(void) {
|
gb_internal void init_terminal(void) {
|
||||||
build_context.has_ansi_terminal_colours = false;
|
build_context.has_ansi_terminal_colours = false;
|
||||||
|
|
||||||
|
gbAllocator a = heap_allocator();
|
||||||
|
|
||||||
|
char const *no_color = gb_get_env("NO_COLOR", a);
|
||||||
|
defer (gb_free(a, cast(void *)no_color));
|
||||||
|
if (no_color != nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
char const *force_color = gb_get_env("FORCE_COLOR", a);
|
||||||
|
defer (gb_free(a, cast(void *)force_color));
|
||||||
|
if (force_color != nullptr) {
|
||||||
|
build_context.has_ansi_terminal_colours = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(GB_SYSTEM_WINDOWS)
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
HANDLE hnd = GetStdHandle(STD_ERROR_HANDLE);
|
HANDLE hnd = GetStdHandle(STD_ERROR_HANDLE);
|
||||||
DWORD mode = 0;
|
DWORD mode = 0;
|
||||||
@@ -2558,10 +2574,16 @@ gb_internal void init_terminal(void) {
|
|||||||
build_context.has_ansi_terminal_colours = true;
|
build_context.has_ansi_terminal_colours = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elif defined(GB_SYSTEM_OSX) || defined(GB_SYSTEM_UNIX)
|
||||||
|
char const *term_ = gb_get_env("TERM", a);
|
||||||
|
defer (gb_free(a, cast(void *)term_));
|
||||||
|
String term = make_string_c(term_);
|
||||||
|
if (!str_eq(term, str_lit("dumb")) && isatty(STDERR_FILENO)) {
|
||||||
|
build_context.has_ansi_terminal_colours = true;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!build_context.has_ansi_terminal_colours) {
|
if (!build_context.has_ansi_terminal_colours) {
|
||||||
gbAllocator a = heap_allocator();
|
|
||||||
char const *odin_terminal_ = gb_get_env("ODIN_TERMINAL", a);
|
char const *odin_terminal_ = gb_get_env("ODIN_TERMINAL", a);
|
||||||
defer (gb_free(a, cast(void *)odin_terminal_));
|
defer (gb_free(a, cast(void *)odin_terminal_));
|
||||||
String odin_terminal = make_string_c(odin_terminal_);
|
String odin_terminal = make_string_c(odin_terminal_);
|
||||||
|
|||||||
Reference in New Issue
Block a user