3.9 Parsing the output

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.