Skip to content

Conversation

edgar-bonet
Copy link
Contributor

ANSI color escape codes are usually a nice touch when they land on a tty, as they enhance the text readability. However, when the output is being redirected, they are most often an annoyance. Even on a tty, they are sometimes not welcome, e.g. when keeping a typescript of terminal session.

This pull request makes simavr refrain from using ANSI escape codes in the following cases:

  • when libsimavr is being used outside of run_avr
  • when the standard output of run_avr is not a tty
  • when the environment variable NO_COLOR is set to a non-empty value

The latter is a common convention, widely adopted by many libraries and programs dealing with terminal output.

This pull request is built on top of (i.e. is a superset of) #556.

Fixes: #555.

@edgar-bonet
Copy link
Contributor Author

I had a CI fail on error: 'font_color' defined but not used. Force-pushed with the following fixup:

diff --git a/simavr/sim/run_avr.c b/simavr/sim/run_avr.c
index eab651c..e4da1e4 100644
--- a/simavr/sim/run_avr.c
+++ b/simavr/sim/run_avr.c
@@ -34,12 +34,14 @@
 
 #include "sim_core_decl.h"
 
+#ifndef NO_COLOR
 /* ANSI escape codes to be used if color is enabled. */
 static const struct text_colors font_color = {
        .green  = "\e[32m",
        .red    = "\e[31m",
        .normal = "\e[0m"
 };
+#endif
 
 static void
 display_usage(

@gatk555
Copy link
Collaborator

gatk555 commented Sep 29, 2025

My personal view is that the first and last commits are enough. Changing the default behaviour may annoy someone.

This will enable turning colors on and off at run time.
Refrain from coloring output if NO_COLOR is defined and has a non-empty
value. This is a common convention.

Link: https://no-color.org
@edgar-bonet
Copy link
Contributor Author

@gatk555: Thanks for reviewing this and my previous PR!

Changing the default behaviour may annoy someone.

OK. I rewrote the branch keeping only the first and last commits. This required inverting the logic of the test in the last commit: instead of “if colors are welcome, enable them”, it is now “if colors are unwelcome, disable them”.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add --no-color so I can redirect the output of uart0 but to a file.
2 participants