diff --git a/src/environment.c b/src/environment.c index 9446130..c0c8f08 100644 --- a/src/environment.c +++ b/src/environment.c @@ -841,7 +841,7 @@ void set_binding(env_t *env, const char *name, type_t *type, CORD code) __attribute__((format(printf, 4, 5))) _Noreturn void compiler_err(file_t *f, const char *start, const char *end, const char *fmt, ...) { - if (isatty(STDERR_FILENO) && !getenv("NO_COLOR")) + if (USE_COLOR) fputs("\x1b[31;7;1m", stderr); if (f && start && end) fprintf(stderr, "%s:%ld.%ld: ", f->relative_filename, get_line_number(f, start), @@ -850,11 +850,11 @@ _Noreturn void compiler_err(file_t *f, const char *start, const char *end, const va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); - if (isatty(STDERR_FILENO) && !getenv("NO_COLOR")) + if (USE_COLOR) fputs(" \x1b[m", stderr); fputs("\n\n", stderr); if (f && start && end) - highlight_error(f, start, end, "\x1b[31;1m", 2, isatty(STDERR_FILENO) && !getenv("NO_COLOR")); + highlight_error(f, start, end, "\x1b[31;1m", 2, USE_COLOR); if (getenv("TOMO_STACKTRACE")) print_stack_trace(stderr, 1, 3); diff --git a/src/tomo.c b/src/tomo.c index 1ce6332..be4a9d9 100644 --- a/src/tomo.c +++ b/src/tomo.c @@ -96,6 +96,10 @@ int main(int argc, char *argv[]) if (stat(compiler_path, &compiler_stat) != 0) err(1, "Could not find age of compiler"); + USE_COLOR = getenv("COLOR") ? strcmp(getenv("COLOR"), "1") == 0 : isatty(STDOUT_FILENO); + if (getenv("NO_COLOR") && getenv("NO_COLOR")[0] != '\0') + USE_COLOR = false; + if (register_printf_specifier('T', printf_type, printf_pointer_size)) errx(1, "Couldn't set printf specifier"); if (register_printf_specifier('W', printf_ast, printf_pointer_size))