A.J.Mechelynck wrote:
> Howard Jess wrote:
>> A.J.Mechelynck wrote:
>>>
>>> What about
>>>
>>>     :set errorformat=%m[%f:%l:%v]%r
>>
>> Sorry; I'm using Vim 6.3; it says:
>>
>>     E373: Unexpected %r in format string
>>
>> Perhaps this is a new feature in 7.0??
>
> I dunno. I've junked 6.3 when 6.4 came around, and though I maintained
> 6.4 and 7.0 alpha in parallel, now that the 7.0 "release" is out (with
> already 35 bugfixes) I've junked 6.4 too. Here's the paragraph about %r
> in 'errorformat' in the 7.0 help (quickfix.txt fot Vim 7.0, last change
> 2006 Apr 30):
>
>     %r        matches the "rest" of a single-line file message %O/P/Q
>
> Maybe it isn't appropriate (%O, %P and %Q refer to how to handle
> errorfiles where the filename is given once followed by several errors
> with line/col without filename). Is it allowable to have %m more than
> once in the format? Try
>
>     :set efm=%m[%f:%l:%v]%m

As you note, %r is valid, apparently, only in the context of %O/P/Q
or similar formats. That didn't apply to my messages. And multiple %m's
don't work either.


> If it doesn't work, you could pre-process the errorfile so as to move
> the [filename:123:45] part to the end of its line, and then match it
> with %m[%f:%l:%v] on the modified errorfile. Vim could do the
> preprocessing: (assuming the errorfile is called "make.log")

This hint led me to a working solution. I appended the error location to
the end of the line (leaving it in place, as well); changed the location
delimiters from "[]" to "@{}" (maybe the use of "[]", significant to regular-
and scanf-expressions, was a problem), and :set efm=%m\ @{%f:%l:%v}.

Thank you!

hj

Reply via email to