1

I'm writing an errorformat string, and it works for the most part. My problem is that I have lines like this as the makeprg output:

Some text I want to show in the QuickFix window^M

Yes, the line ends with an spurious ^M character I want to remove. So, what I want in my QuickFix window is this, without the ^M character:

|| Some text I want to show in the QuickFix window

but I have this instead:

|| Some text I want to show in the QuickFix window^M

So far, this is the relevant part of my errorformat:

set errorformat=%+GSome text%m

I've tested, without success, something like this:

set errorformat=%+GSome text%m%-G^M%.%#

but it throws an error (not from the ^M which is a literal control-M char, not a caret followed by an M).

Obviously the solution is not using %G but I am at a loss here.

How can I remove the line ending character from the line here? And also, removing the initial || would be a plus, but I think it's impossible to do in Vim.

Thanks in advance!

Edited to make clearer how the input text looks

  • It's impossible to write/discuss an `efm` without knowing how the input text looks. – romainl Oct 15 '18 at 20:33
  • Sorry, @romainl, my bad. The text actually looks like the first QuickFix line I showed, I'll modify the question to make that clear. Thanks for pointing this, I thought that it was easy to infer from the question text but obviously I was wrong ;) – Raúl Núñez de Arenas Coronado Oct 16 '18 at 05:28

1 Answers1

0

Well, turns out I found a solution, probably not very good but it works, using trial and error.

set errorformat=%\\(Some Text%*[^.]).%\\)%\\@=%m

That is, the solution is using the Vim pattern (regex) expressions within errorformat, which has a quite arcane look but works, together with %* to match unknown text on the rest of the line

The solution uses \@=, a zero-width match, and requires some kind of terminator for the line, which appears before the ^M character I want to ignore, and some kind of text appearing somewhere on the line to match that line and not others.

Probably there is a much better solution but this is the best I could do myself.