One's for printing translated message, one's in english for parsing.
That's an option, but it takes twice the time, for large projects in slow computers it could be an issue.
Maybe some compiler might do nothing the second time if the source has not changed and the output files are still there.
And the code would be a bit more complex.
Showing warnings too with orange dots ?
Yes, that would be great.
In any case this is not fully solved yet, your proposal just opened a "full review" of this part of the compiling system.
As I mentioned before I see 2 problems to address:
1- Detecting that there is an error.For this I find exit code more reliable (and faster), but could still fail if a compiler does not use exit codes or do funny things with it(*).
Now at least there are not misleading messages "Success" when indeed the compilation failed.
The worst that can happen is that error line is hot detected, but the error messages from the compiler are still in the bottom panel.
One option that comes to my mind is always doing the build in a hidden empty folder.
Then if we find the hex file there we know that the process was successful and copy all the files to the actual build folder overwriting older ones.
If we don't find the hex file then we know that something went wrong.
But this makes things more complicated, slower and could be problematic in some cases.
Maybe it could be an option only for compilers that are known to not work properly in our general case...
2- Extracting information from the process output.This process iterates along all the text to find strings, so it's potentially slow.
Currently this only happens if an error is detected (via exit code) and only until the first error if found.
But if we want to find all errors and warnings this should also change(**).
So if we want to address (*) and (**) we are forced to go through the "Extracting information" process in all cases.
There are some setting we could add. like: "Show all errors" and "Show warnings", so the user can choose.
If we need to find all the error and warning messages, disabling the translation is probably the best option.
But there are many possible approaches depending on what we want.