On Tuesday, 16 May 2017 at 14:04:34 UTC, Walter Bright wrote:
With all the complaints about color, note that dmd already has
been using color in error messages for years with no complaints
My complaint isn't about the presence of color* but rather about
the OVERUSE of it.
The old way of coloring the message header helps you quickly find
the beginning of an error among output spam. It stands out. But
now, with color being all over the place, you can't visually scan
for it anymore. It loses its special meaning.
Similarly, what I want to see in the future is highlighting of
specific parts of code where the error applies.
Error: No overload for foo(int), candidates are:
foo(string);
foo(int, string);
In my perfect world, `Error` is colored, like it is now, you can
scan for it and find that. Then, the first `string` is also
highlighted as a mismatch of the overload, and the `int` in the
candidate signature is also highlighted as a match of the
overload.
Then, your eyes can just look for the color and realize which
candidate is the best match and immediately see what you're
missing.
With syntax highlighting though, string and int will be
highlighted as types or keywords... which is irrelevant to the
issue of matching the correct overload. It stands out, but means
nothing. And if everything is colored, yikes, then nothing stands
out since you can't even eye scan it at all.
So again it is NOT color that bothers me. It is OVERUSE of color
for stuff that isn't important to read the message which dilutes
the meaning of color. It isn't special anymore.
* I did hate it for a while though because the contrast was poor,
but I fixed that with some hack to my terminal emulator code to
give it a superior adaptive palette. Perhaps tilix's author will
want to do this too: mine has a different yellow when printed on
white than on black, different blue, different teal. The
application outputs the same sequence but my thing is aware of
the background and adapts. Even if the application tries to
output unreadable stuff explicitly, my terminal emulator won't
allow it.
Big, big win on my eyes.