The first line of an entry is still exactly file:line:col: message, because that is the GNU format compilation-mode already parses and the whole of the editor story. Everything under it is indented, which compilation-mode ignores, so the underline is free. A note gets an entry of its own rather than being folded into the error's block — that is what makes the second place somewhere next-error can go, and is the reason notes carry locations. Every part of it degrades to the bare first line: a location the checker invented has line 0, the prelude and the REPL have names that are not paths, and a file can change under us between being read and being blamed. An error printer that can raise is worse than one that prints less.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%