I am trying to match the following error with efm
:
AssertionError: 1 == 2
at /home/strager/projects/blah/blah.js:13:37
The error message can be anything (i.e. it doesn't always match the AssertionError: .*
or .*Error: .*
formats). The general format is:
errormessage
at filename:line:column
My problem is that the error message matches any line; I need to restrict the error message to one line only, and only match if it's followed by a matching "at" line.
I have tried the following efm
:
set efm=%Z\ \ \ \ at\ %f:%l:%c,%E%m
" %Z at %f:%l:%c,%E%m
This almost works, but it matches status lines (e.g. non-errors before and after the error) in addition to the errors. How can I force %E%m ... %Z
to be only two lines total (one for the error message, and one for the at
line)? I have access to the standard UNIX tools for makeprg
if needed.
Do you really want to spend your time learning an obscure pattern language that has no application anywhere else? Unless someone is paying you to write vim compiler plug-ins, I wouldn't (and I love vim!). Since you're willing to open the toolbox, just write a wrapper around your checker and spit out an easy-to-parse format. Eg: