Feature #20100
open[Feature] Better / easier support for (optional) colours, on the commandline, in case a parsing error happened?
Description
This suggestion is primarily in regard to (optional) colour support, on the commandline,
in case a parsing error happened. I'll explain what I mean with this in a moment.
Let me first show a partial screenshot (image), to indicate this problem.
https://i.imgur.com/FylLvsY.png
Ruby evaluates the content and indicates the error here, while also helpfully
showing the line numbers WHERE the error happened (on the left hand side).
This is nice. But, I would actually prefer if some colours could be shown here,
at the user's discretion.
For instance, I would like to have the line numbers show in red or a red-colour;
or any colour for that matter. That would give me a visual cue as to the primary
problem (sometimes more than one error is shown, or occurs, in a given .rb file,
or distributed via several .rb files).
The keyword or type-error, such as SyntaxError, should ideally also use another
colour. I may also want to see the specific error in yet another colour, e. g.
the part ", "unexpected 'end".
The error here was that I copy/pasted some code (I am porting old code and checking
it as I do right now) and left behind a trailing ',' there.
Hopefully I could convince the dear reader that colours may be important. Perhaps
colour support is already possible, and I (and perhaps others) just don't know about
it.
So the question, then, would be: how to enable simple colours to be shown?
Well, a couple of ways would be possible. A simple one may be to put an environment
variable, and document it clearly, such as RUBY_ENABLE_COLOURS or RUBY_COLOURS, and
a value of 1 to indicate that we want to use colours. Or any other name, these are
just suggestions; can be longer names, to indicate on-error situations such as
RUBY_SHOW_COLOURED_ERRORS or RUBY_COLOURED_ERRORS (or COLORED, I don't mind the UK
or US spelling, even though I got used to the UK spelling due to UK being close to
central Europe).
There could also be an internal API we could call; not sure which one, perhaps
via RbConfig, e. g. RbConfig.enable_colours or RbConfig::COLOURS_ON_WARNING = true
or something like that. Or another way where this may reside, although an ENV
variable may be simpler. A few other options may also be possible - either way the
primary objective would be to make it super-easy and super-simple to have colours
support, perhaps even for all of ruby, without needing to micro-manage ENV variables.
Ideally https://docs.ruby-lang.org/en/ should also get a dedicate page about colours
in general. On Windows colours may not always work well (I have had different
success there) but on linux, bash, KDE konsole and so forth, colours work really well
for me. At any rate this was the suggestion - thank you for reading this.
PS: I searched for "colo" on the docs.ruby-lang.org webpage; results often involved
e. g. IRB like https://docs.ruby-lang.org/en/3.3/IRB/Color.html, which is useful if
someone wants to modify IRB's behaviour, but not so useful when it comes to general
things concerning MRI. There is really a distinct lack of top-down overview-articles
in regards to ruby on the official homepage. How are new users supposed to find things
like that? It would be nice if a long-term strategy for ruby would also be to provide
higher "overarching" documentation for ruby, via a central place (MRI). At any rate,
this is a separate issue - my feature request here is concerning about enabling
colours support on the commandline, in case of an error. The ruby parser probably
already has this information, since it can show where an error happens, so all that
may be necessary would be to tie this towards colour-output; and then also a way
for people to tap into that (which is why I think an ENV variable, even though not
super-sophisticated, may be the simplest way to go, but that should also be clearly
documented in a very-easy-to-find, and accessible, manner).
Updated by Anonymous 10 months ago
This is a reasonable feature request. Syntax highlighting helps in easily scanning and parsing code, so having that in the terminal output will help to identify errors and locations faster.
Making this opt-in rather than opt-out seems the more sensible option to current users.
Regarding the approach to activate this feature, the env variable seems reasonable. Though I wonder if it should also be a flag, which can be set in RUBYOPT
.
As for the name of the envvar, I don't have a strong opinion, though it should definitely start with RUBY_
.
Updated by hsbt (Hiroshi SHIBATA) 10 months ago
- Related to Feature #19690: Add terminal colorizing gem to stdlib added