The output generated by the syntax check tool is parsed in the process
filter/sentinel using the error message patterns stored in the
flymake-proc-err-line-patterns
variable. This variable contains a
list of items of the form (regexp file-idx line-idx err-text-idx)
, used to determine whether a particular line is an
error message and extract file name, line number and error text,
respectively. Error type (error/warning) is also guessed by matching
error text with the ‘^[wW]arning’ pattern. Anything that was not
classified as a warning is considered an error. Type is then used to
sort error menu items, which shows error messages first.
The Proc backend is also able to interpret error message patterns
missing err-text-idx information. This is done by merely taking the
rest of the matched line ((substring line (match-end 0))
) as
error text. This trick allows making use of a huge collection of
error message line patterns from compile.el. All these error
patterns are appended to the end of
flymake-proc-err-line-patterns
.
The error information obtained is saved in a buffer local variable. The buffer for which the process output belongs is determined from the process-id->buffer mapping updated after every process launch/exit.